针对 .Net Core 2.1 的发布进行了编辑
重复测试.Net Core 2.1的发布,我得到这样的结果
“Concat”的 1000000 次迭代耗时 842 毫秒。
“新字符串”的 1000000 次迭代耗时 1009 毫秒。
“sb”的 1000000 次迭代耗时 902 毫秒。
简而言之,如果您使用的是 .Net Core 2.1 或更高版本,Concat
则为王。
有关详细信息,请参阅MS 博客文章。
我已经将此作为另一个问题的主题,但越来越多,这正在成为这个问题的直接答案。
我已经对 3 种将 a 转换IEnumerable<char>
为 a的简单方法进行了一些性能测试string
,这些方法是
新字符串
return new string(charSequence.ToArray());
康卡特
return string.Concat(charSequence)
字符串生成器
var sb = new StringBuilder();
foreach (var c in charSequence)
{
sb.Append(c);
}
return sb.ToString();
在我的测试中,在链接的问题中有详细说明,对于我得到这样的结果的1000000
迭代,"Some reasonably small test data"
“Concat”的 1000000 次迭代耗时 1597 毫秒。
“新字符串”的 1000000 次迭代耗时 869 毫秒。
“StringBuilder”的 1000000 次迭代耗时 748 毫秒。
这向我表明,没有充分的理由使用string.Concat
此任务。如果您想要简单,请使用新的字符串方法,如果想要性能,请使用StringBuilder。
我会警告我的断言,实际上所有这些方法都可以正常工作,这可能都是过度优化。