知道“StringBuilder比string性能强”好多年了,近日无聊病发作,就把这两个家伙给动了手术:
using System;
using System.Text;
namespace ConsoleApplication1
{
classProgram
{
staticvoid Main(string[] args)
{
int start = Environment.TickCount; //计时打点
fun1();
int middle = Environment.TickCount; //计时打点
fun2();
int end = Environment.TickCount; //计时打点
Console.WriteLine("string 运行时间 {0} 秒", 0.001 * (middle - start));
Console.WriteLine("StringBuilder 运行时间 {0} 秒", 0.001 * (end - middle));
Console.ReadKey();
}
//fun1和fun2是两个结构功能相同的无聊耗时方法
privatestaticvoid fun1()
{
for (int i = 0; i < 1000; i++)
{
string s = "";
for (int j = 0; j < 200; j++)
{
s += "Outer index = ";
s += i;
s += " Inner index = ";
s += j;
s += " ";
}
}
}
privatestaticvoid fun2()
{
for (int i = 0; i < 1000; i++)
{
StringBuilder s = newStringBuilder();
for (int j = 0; j < 200; j++)
{
s.Append("Outer index = ");
s.Append(i);
s.Append("Inner index = ");
s.Append(j);
s.Append(" ");
}
}
}
}
}
可见区别之大。
用vs自带的性能分析工具分析如下(过程比较慢):
查看函数详细信息:
可见fun1明显比fun2的非独占分配数大,如果想进一步了解细节,可点击相应区域,结果如下
接下去,你懂得。。。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性