C# 開發WM程序性能優化的幾個可能的方面

最近又寫在Window Mobile 6.1上面寫了個程序,包含了從藍牙設備讀取數據、處理數據、顯示數據和在SD卡上存儲數據的功能,四者同時且實時進行,如何保證所有工作都能完成且不會有太大延遲,使其在配置稍低的手機,例如主頻較小的HTC S1上也能運行,着實費了一番功夫。總結了一下,我目前採取的方法,除了在程序本身和算法上優化外,還有以下方面:

1、繪圖

         在我的程序中需要實時的顯示數據。在屏幕中顯示是一個很繁重的工作。不同於PC,稍低端的手機往往沒有很大的內存和很高的CPU主頻,因此,再實現雙緩衝繪圖時,用到的內存位圖、畫筆、畫刷等資源應該是在繪圖消息響應函數外就初始化好,在繪圖函數中重複使用,否則若每次在繪圖中都重新初始化一副位圖,會耗費很長時間,嚴重影響存儲的性能。

        另外,兩次繪圖之間的間隔不宜太小,間隔太小,連續的重繪會導致屏幕響應不暢,很容易造成假死機的情況

2、文件寫操作

        相比繪圖,文件寫操作對性能的影響稍小,但也是一個可能影響性能的因素,尤其是向速度較慢的SD卡上寫數據的時候。在這裏,可以考慮構造一段緩存,緩存接收到的數據,滿足一定條件的時候再寫,而不是每次收到數據就寫並Flush。在這裏,寫的塊大小最好是2的倍數。

3、多線程

        這個不用多說了,線程系統調度的基本單位,儘管CPU是串行的,但由於多線程的程序可分得更多的時間片,因此理論上會優於單線程,但要非常注意同步問題以及銷燬時容易出現的ThreadAbortException

 

以上是我在開發實時程序優化性能時考慮的幾個方面,當然也會從算法和代碼層面上優化。說的有不對的地方,望指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章