首頁 >後端開發 >C#.Net教程 >C# 字串操作--減少垃圾回收壓力

C# 字串操作--減少垃圾回收壓力

黄舟
黄舟原創
2017-02-13 11:59:031636瀏覽

C# 效能最佳化細節

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


    指的
  • string filter=“”;//不建议
     
    string filter=string.Empty; //建议

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


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

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

ToLower這類方法都會重新產生字串對


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

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

  • 4、巧用StringBuilder進行拼接運算


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

  • [object Object]

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


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

  • 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

  • ,str.


, str4),效率反而高於StringBuilder。 String.Concat會一次性確定字串長度, StringBuilder需要做Resize,適用於多次產生string物件的情況。



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



  • 來初始化速度最快。

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


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


以上就是C#  字串操作--減少垃圾回收壓力的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn