返回
C# 中string和StringBuilder性能差异
2024-02-09
1028 0在拼接一个字符串写入csv文件时候发现string + 的方式耗时巨大,在小量字符串拼接的时候看不出,当字符串拼接一多,性能差异巨大。
于是用它跟stringbuilder 进行一个比对:
Stopwatch sw = new Stopwatch();
sw.Start();
string content = "";
for(int i=0;i<40_000;i++)
{
content+= "123456,-99.999\r\n";
// 编译器优化后的代码为:content = content.Concat(string1,stirng2);
}
long content_time = sw.ElapsedMilliseconds;
sw.Stop();
(content_time*0.001).Dump("String 拼接耗时(s)");
StringBuilder sb = new StringBuilder();
Stopwatch sw2 = new Stopwatch();
sw2.Start();
for(int i=0;i<400_000;i++)
{
sb.Append("123456,-99.999\r\n");
}
sw2.Stop();
(sw2.ElapsedMilliseconds*0.001).Dump("StringBuilder 拼接耗时(s)");
得出的结果是:
stringBuilder 拼接的字符串是40万个,string拼接的是4万个,耗时差异也是比较明显的。
stackflow 上的解析为:
简而言之就是string 是不可变(Immutable)的,拼接的时候就是创建一个新的字符串。
stringbuilder 是可变长度(Mutable)的,自然效率就高。
您可能感兴趣:
网友点评
提交