C# 中string和StringBuilder性能差异
2024-07-22
56
在拼接一个字符串写入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)的,自然效率就高。
更新于:4个月前赞一波!
相关文章
- .NET C# EntityFramework(EF)连接SQLite代码示例
- .NET9 C# 13 有哪些新特性?
- C#中的String和StringBuilder的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- C# Const 和 ReadOnly的区别
- C# 使用Barrier进行多线程同步
- C#发送邮件代码简洁示例(附源码下载)
- appendformat 输入字符串的格式不正确。
- C# Word转换成Pdf的方法
- c#使用MongoDB开发LBS应用
- hprose for C#使用教程
- c#实现与Java无差异的GZip压缩和GZip解压缩
- .NET Core c#使用SkiaSharp压缩裁切图片去除水印
- c# decimal保留2位小数 并向下舍入
- .NET Core c#使用SkiaSharp压缩图片
- C#复制文件到指定文件夹
- c#获取枚举的Description
- c#读取pdf里的表格
- c# HttpClient下载图片
- c#使用HtmlAgilityPack编辑html并保存
文章评论
评论问答