ASP.NET開發實踐系列課程之c#代碼最佳化

來源:互聯網
上載者:User
c#代碼中影響效能的主要因素
    資源的浪費    
        -記憶體的浪費
        -對象的冗餘
        -cpu的浪費
    拆箱,裝箱
        -實值型別與參考型別的轉化
    演算法
泛型
    c#的泛型支援:類,結構體,介面,委託以及方法成員
    c#的泛型可採用"基類,介面,構造器,實值型別/參考型別"的約束方式來實現對型別參數的顯示約束
    可以定義型別安全的資料結構
    因為防止了拆箱和裝箱,所以可以顯著提高效能
    可在支援泛型和擴充方法時,能夠直接對類型使用擴充方法,而不用再反射調用了。
    實值型別處理使用泛型比不使用泛型集合效率高很多
    參考型別處理用泛型和不使用泛型集合差不多
資料訪問
    資料庫連接最晚開啟,最早關閉
    盡量使用ExecuteReader來讀取資料
    DataTable比用DataSet效能好(除非要儲存關係)
    合理使用串連池
    適當使用SQLCLR做預存程序
    不要忘記DataReader開啟後是需要關閉的

(cmd.ExecuteReader(ConnectionBehavior.CloseConnection); or if (sdr.IsClosed) sdr.Close())
    非託管內容需要顯示的去關閉
迴圈
    盡量減少迴圈體中設定/初始設定變數
    避免在迴圈中修改被便利對象的子項目
    在多線程情境中,迴圈執行時適當使用
    sleep會提高系統整體效能
    避免使用遞迴調用和嵌套迴圈
    推薦盡量使用foreach替代for
異常處理
    捕獲和拋出異常都是消耗比較大的操作,盡量減少try的次數,避免使用異常來控制處理邏輯
    避免引發不必要的異常
    捕獲制訂的異常,盡量避免使用異常的基類System.Exception
    處理異常時,在finally中釋放佔用的資源(串連,檔案流等)
位元運算
    不要忘記位元運算這個效能極高的東東
其它
    減少使用輸出參數
    避免使用ArrayList,盡量使用泛型列表
    部署之前禁用偵錯模式
    使用常量避免建立對象(如string.empty替代"")
    避免使用空的解構函式
    減少類型轉化
    如果資料結構符合索引值對的形式,建議使用泛型字典(非泛型情況下用hashtable)
    提升i/o速度,並減少i/o數量
    若對反射機制不熟悉,應在關鍵模組代碼中避免使用它;
    推薦學習使用老趙的FastReflectionLib

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.