C# 字串操作--減少記憶體回收壓力

來源:互聯網
上載者:User
C# 效能最佳化細節

1、使用string.Empty給一個Null 字元串變數賦初始值


  • String.Empty是一個指代,而””是具體的實現

    string filter=“”;//不建議 string filter=string.Empty; //建議

2、使用str.Length == 0做空串比較


  • 最快的方法:if (str.Length == 0)

  • 其次:if (str == String.Empty)或 if (str == "")


3、避免不必要的字串ToUpper、ToLower類操作

  • ToUpper、ToLower這類方法均會重建字串對

  • String.Compare可實現忽略字串大小寫

    //不推薦的寫法if(s1.ToUpper()==s2.ToUpper()) …;//推薦的寫法if(String.Compare( s1, s2, true ) == 0) …;

4、巧用StringBuilder進行字串拼接操作


  • 如果要構造一個較長的字串,尤其是拼接超過10次時(經驗值),應使用StringBuilder做字串拼接操作。

    [object Object]

5、建立StringBuilder應指定初始大小


  • 預設的初始大小為16,一旦超過即需要Resize一次並增加GC壓力。建議根據經驗值為其指定初始大小。

    StringBuilder sb = new StringBuilder();for (int i = 0; i < 10; i++){   sb.Append(i);}string s = sb.ToString();//建議修改為StringBuilder sb = new StringBuilder(256);for (int i = 0; i < 10; i++){   sb.Append(i);}string s = sb.ToString();


6、避免濫用StringBuilder


  • 類似str1+str2+str3+str4的字串拼接操作會被編譯為 String.Concat(str1,str2,str3, str4),效率反而高於StringBuilder。String.Concat會一次性確定字串長度, StringBuilder需要做Resize,適用於多次產生string對象的情況。


7、通過直接設定.Length=0來初始化StringBuilder


  • 根據實驗結果,多次使用同一StringBuilder對象時,通過直接設定.Length=0來初始化速度最快。

    StringBuiler sb = new StringBuilder(256);  ......sb.Remove(0, sb.Length); //不建議sb.Length = 0; //建議


8、不要使用.Length=0來釋放StringBuilder佔用的記憶體

static void test(){    StringBuilder sb = new StringBuilder(256);    for (int i = 0; i < 100; i++)    {        sb.Append(i);    }    string t = sb.ToString();    ……//其他不使用變數sb的程式碼片段    sb.Length = 0; //去掉該句手工清空sb代碼,會更早釋放記憶體}


9、待續


以上就是C# 字串操作--減少記憶體回收壓力的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.