簡體   English   中英

String.Replace(char,char)還是Replace(string,string)?

[英]String.Replace(char, char) or Replace(string, string)?

當我只需要用另一個字符替換一個字符時,String.Replace(char,char)和String.Replace(字符串,字符串)之間是否存在性能差異?

是的,有:我進行了快速實驗,看起來字符串版本慢了大約3倍。

    string a = "quickbrownfoxjumpsoverthelazydog";
    DateTime t1 = DateTime.Now;
    for (int i = 0; i != 10000000; i++) {
        var b = a.Replace('o', 'b');
        if (b.Length == 0) {
            break;
        }
    }
    DateTime t2 = DateTime.Now;
    for (int i = 0; i != 10000000; i++) {
        var b = a.Replace("o", "b");
        if (b.Length == 0) {
            break;
        }
    }
    DateTime te = DateTime.Now;
    Console.WriteLine("{0} {1}", t2-t1, te-t2);

1.466s vs 4.583s

這並不奇怪,因為字符串的重載需要一個額外的循環來遍歷oldString所有字符。 這個循環只運行一次,但開銷仍然存在。

希望 string.Replace(char, char)可能更快,因為它可以分配恰當的空間量。 我懷疑它會在許多現實世界的應用程序中產生顯着的性能差異。

更重要的是,我會說它更具可讀性 - 更確切地說,你最終會得到一個相同長度的字符串。

String.Replace(char, char)更快。 原因很簡單:

  • Char替換不需要分配具有不同大小的字符串,字符串替換需要首先找出新大小或使用StringBuilder進行替換
  • 更換字符不需要使用一系列字符串進行檢查。 想象一下,你有一個像ABCACABCAC的字符串,你想要取代ABC 你需要找出3個字符是否匹配,當使用字符時你只需找到一個字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM