C# 中string和StringBuilder性能差异
2024-07-22
75
在拼接一个字符串写入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)的,自然效率就高。
更新于:6个月前赞一波!
相关文章
- .NET C# 使用Hook钩子实现全局监听键盘和鼠标
- .NET C#连接FTP实现文件上传下载
- C#使用 Attribute 实现 AOP 功能
- C#中的线程安全的集合ConcurrentQueue使用示例
- .NET C#中的Func、Predicate和Expression用法详解
- C#13新特性 使用System.Threading.Lock简化线程同步
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .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解压缩
文章评论
评论问答