返回

C# 中string和StringBuilder性能差异

2024-02-09 C# string StringBuilder 性能差异 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)");

得出的结果是:

C# 中string和StringBuilder性能差异

stringBuilder 拼接的字符串是40万个,string拼接的是4万个,耗时差异也是比较明显的。

stackflow 上的解析为:

C# 中string和StringBuilder性能差异

简而言之就是string 是不可变(Immutable)的,拼接的时候就是创建一个新的字符串。

stringbuilder 是可变长度(Mutable)的,自然效率就高。

您可能感兴趣:

阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价

DOVE 网络加速器 梯子 免费 试用

椤堕儴