只是出于好奇(并不指望有显著结果),在性能方面以下哪个代码更好呢?
private void ReplaceChar(ref string replaceMe) {
if (replaceMe.Contains('a')) {
replaceMe=replaceMe.Replace('a', 'b');
}
}
private void ReplaceString(ref string replaceMe) {
if (replaceMe.Contains("a")) {
replaceMe=replaceMe.Replace("a", "b");
}
}
在第一个示例中,我使用了char,在第二个示例中使用了Contains()和Replace()中的字符串。
第一个示例因为使用了更加节省内存的"char",所以性能更好吗?还是第二个示例更好,因为编译器在此操作中不需要强制转换?
或者这全部都是无稽之谈,因为CLR在两种变化中生成相同的代码?
char
版本应该表现更好:无需分配字符串,查找单个字符比查找一组字符(即字符串)更容易,Replace
实现提前知道返回的字符串大小,因此无需进行潜在的额外分配... 但想要知道确切情况就必须进行测量。 - Zdeslav Vojkovic