好的軟件產品:業務流程、用戶體驗、安全性和非常重要的性能。
1、非託管資源的清理推薦Dispose模式來代替Finalize方式。
2、選擇正確的垃圾收集器:工作站GC和服務器GC。
3、在適當的情況下對對象實現弱引用。保證在胖對象在內存不足時GC可以回收。
MyClass mc = new MyClass();
//創建弱引用
WeakReference wr = new WeakReference(mc);
//移除強引用
mc = null;
4、儘可能以using來執行資源清理。
5、推薦使用泛型集合來代替非泛型集合。大量的裝箱、拆箱操作會帶來頻繁的垃圾回收、安全檢查都不同程度的影響着性能,這些弊端再泛型集合中蕩然無存。
6、特定類型的Array性能優於ArrayList。後者添加值類型的時候會有裝、拆箱操作,但它更容易操作和使用,選擇存在權衡比較。
7、初始化時最好爲集合對象指定大小。
8、字符串駐留機制,是CLR爲String類型實現的特殊設計。
9、合理使用System.String和System.Text.StringBuilder。優先使用String,而在大量字符串連接操作的情況下優先考慮StringBuilder。
10、儘量在子類中重寫ToString方法。有效控制輸出結果並在一定程度上減少裝箱操作的發生。
11、字符串比較通常做法是str1==str2,較好的實現爲String.Compare(str1,str2);返回-1 或 0
12、for和foreach的選擇。推薦選擇foreach來處理可枚舉集合的循環結構。
13、用多線程來處理多任務。
14、儘量減少拋出異常,禁止將異常處理放在循環內,應儘量使用邏輯流程控制來代替異常處理。
15、捕獲異常時,catch塊儘量指定具體的異常篩選器,多個catch塊應該保證異常由特殊到一般的排列順序。
16、struct和Class的性能比較,在特殊情況下以struct來實現對輕量數據的封裝是較好的選擇,struct是值類型分配在線程的堆棧上,有較好的性能表現。當然,絕大部分情況下,class都具有不可代替的地位。
17、以is/as模式進行類型兼容性檢查。
18、使用const和static readonly的權衡。 在實際應用中推薦使用static readonly來代替const,以解決const可能引起的程序集引用不一致問題,還有帶來較多的靈活性控制。
19、儘量避免不當的裝箱、拆箱,選擇合適的代替方案。
20、儘量使用一維零基數組。
21、用以FxCop工具,檢查你的代碼。可以幫助我們檢查分析現存託管程序在設計、本地化、命名規範、性能和安全性幾個方面是否規範。
讀書筆記(備忘)-.NET性能優化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
C#接口作用的深入理解
笑面虎WJ
2018-08-27 19:54:13
分頁控件AspNetPager的用法
笑面虎WJ
2018-08-27 19:54:01
list裝換datatable,datatable裝換list
笑面虎WJ
2018-08-27 19:54:00
Repeater使用 AspNetPager分頁控件 仿(網易、拍拍、迅雷)
笑面虎WJ
2018-08-27 19:54:00
Asp.Net alert彈出提示信息的5種方法
笑面虎WJ
2018-08-27 19:54:00
AspNetPager與gridview結合實現分頁
笑面虎WJ
2018-08-27 19:54:00
winform安裝項目、安裝包的製作、部署
笑面虎WJ
2018-08-27 19:54:00
C# 如何實現記住密碼功能
笑面虎WJ
2018-08-27 19:53:56
覺得自己應該讀的技術書籍
anfeng_8379
2018-08-27 18:11:22
.net 文件操作類(轉載)
anfeng_8379
2018-08-27 18:11:22
GridView自定義數字分頁功能
anfeng_8379
2018-08-27 18:11:21
C#事件與委託
anfeng_8379
2018-08-27 18:11:10
很好用的幾個webServer服務,網上搜的
china_k1
2018-08-27 18:03:50
很簡單的生成靜態頁面
china_k1
2018-08-27 18:03:37