[英]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)
更快。 原因很簡單:
StringBuilder
進行替換 ABCACABCAC
的字符串,你想要取代ABC
。 你需要找出3個字符是否匹配,當使用字符時你只需找到一個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.