您的位置:首页 > 编程语言 > C#

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

以上是我在开发实时程序优化性能时考虑的几个方面,当然也会从算法和代码层面上优化。说的有不对的地方,望指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: