C# 开发WM程序性能优化的几个可能的方面
2010-08-28 08:45
656 查看
最近又写在Window Mobile 6.1上面写了个程序,包含了从蓝牙设备读取数据、处理数据、显示数据和在SD卡上存储数据的功能,四者同时且实时进行,如何保证所有工作都能完成且不会有太大延迟,使其在配置稍低的手机,例如主频较小的HTC S1上也能运行,着实费了一番功夫。总结了一下,我目前采取的方法,除了在程序本身和算法上优化外,还有以下方面:
1、绘图
在我的程序中需要实时的显示数据。在屏幕中显示是一个很繁重的工作。不同于PC,稍低端的手机往往没有很大的内存和很高的CPU主频,因此,再实现双缓冲绘图时,用到的内存位图、画笔、画刷等资源应该是在绘图消息响应函数外就初始化好,在绘图函数中重复使用,否则若每次在绘图中都重新初始化一副位图,会耗费很长时间,严重影响存储的性能。
另外,两次绘图之间的间隔不宜太小,间隔太小,连续的重绘会导致屏幕响应不畅,很容易造成假死机的情况
2、文件写操作
相比绘图,文件写操作对性能的影响稍小,但也是一个可能影响性能的因素,尤其是向速度较慢的SD卡上写数据的时候。在这里,可以考虑构造一段缓存,缓存接收到的数据,满足一定条件的时候再写,而不是每次收到数据就写并Flush。在这里,写的块大小最好是2的倍数。
3、多线程
这个不用多说了,线程系统调度的基本单位,尽管CPU是串行的,但由于多线程的程序可分得更多的时间片,因此理论上会优于单线程,但要非常注意同步问题以及销毁时容易出现的ThreadAbortException
以上是我在开发实时程序优化性能时考虑的几个方面,当然也会从算法和代码层面上优化。说的有不对的地方,望指正。
1、绘图
在我的程序中需要实时的显示数据。在屏幕中显示是一个很繁重的工作。不同于PC,稍低端的手机往往没有很大的内存和很高的CPU主频,因此,再实现双缓冲绘图时,用到的内存位图、画笔、画刷等资源应该是在绘图消息响应函数外就初始化好,在绘图函数中重复使用,否则若每次在绘图中都重新初始化一副位图,会耗费很长时间,严重影响存储的性能。
另外,两次绘图之间的间隔不宜太小,间隔太小,连续的重绘会导致屏幕响应不畅,很容易造成假死机的情况
2、文件写操作
相比绘图,文件写操作对性能的影响稍小,但也是一个可能影响性能的因素,尤其是向速度较慢的SD卡上写数据的时候。在这里,可以考虑构造一段缓存,缓存接收到的数据,满足一定条件的时候再写,而不是每次收到数据就写并Flush。在这里,写的块大小最好是2的倍数。
3、多线程
这个不用多说了,线程系统调度的基本单位,尽管CPU是串行的,但由于多线程的程序可分得更多的时间片,因此理论上会优于单线程,但要非常注意同步问题以及销毁时容易出现的ThreadAbortException
以上是我在开发实时程序优化性能时考虑的几个方面,当然也会从算法和代码层面上优化。说的有不对的地方,望指正。
相关文章推荐
- [zhuan]asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
- asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
- asp.net 程序性能优化的七个方面 (c#(或vb.net)程序改进)
- Asp.Net 程序性能优化的几个方面(转载)
- asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
- Asp.Net 程序性能优化的几个方面(转载)
- asp.net 程序性能优化的七个方面 (c#(或vb.net)程序改进)
- asp.net 程序性能优化的七个方面
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- asp.net性能优化的几个方面
- 漫谈Java程序的性能优化-Java基础-Java-编程开发
- 如何优化JAVA程序开发,提高JAVA性能
- .NET 程序优化性能的七个方面
- c#程序开发中几个注意事项
- 优化程序性能的几个方法(来自于《深入理解计算机系统》)总结
- 在开发中你可能没有考虑到的两个性能优化
- 64位程序开发中的性能优化技巧
- [转] C# 性能优化方面的总结
- EBS开发性能优化之查找需要优化的程序
- asp.net程序性能优化的七个方面 (转)