关于string.Format的效率问题,果然不出所料!

chequan 2005-06-06 01:19:23
以前在用VB做一个数据分析软件时,分析实测数据,并图形化显示。
基本步骤就是读取数据文件(二进制)、分析计算数据、绘制图形。软件写好了,但是一运行奇慢无比,大概需要10多秒时间。难以忍受。郁闷的是开始始终找不到问题所在。经过各个模块逐块分析,排除了文件读取、绘制图形这两个模块。运行耗时主要集中在了分析计算数据这里。
但是里面就是一些基本的数学运行,不可能这么慢呀。
后来无意中发现了代码中的非常多的Format函数,这个函数用来格式化数据,难道是这个函数作怪?后来我去掉程序中用到的所有Format函数。程序运行一下提高了很多,由原来的10多秒变成了2-3秒。真没想到简单的Format函数确遇到这样的问题。后来改进了程序,速度提升了。这件事算是完了。

前几天我在写自己的程序时,无意中又主要到了我的程序用了很多的string.Format函数,这时我联想到了我以前遇到的事,不禁担心起它的效率来了。刚刚我简单地测试了下,结果真的发现这个函数多了也是非常耗时的。
测试代码如下:
string strTmp = "";
int nNum = 10000000;
Console.WriteLine("Begin: {0}", DateTime.Now);
for (int i = 0; i <= nNum; i++)
{
strTmp = "aaa" + "bbb" + "ccc" + "ddd";
}
Console.WriteLine("End: {0}", DateTime.Now);
Console.WriteLine("");
Console.WriteLine("Begin: {0}", DateTime.Now);
for (int i = 0; i <= nNum; i++)
{
strTmp = string.Format("{0}{1}{2}{3}", "aaa", "bbb", "ccc", "ddd");
}
Console.WriteLine("End: {0}", DateTime.Now);
测试结果如下:
Begin: 2005-6-6 13:13:57
End: 2005-6-6 13:13:57

Begin: 2005-6-6 13:13:57
End: 2005-6-6 13:14:09

可见采用string.Format连接字符串和采用简单的+来连接字符串,效率有很大的差异。虽然我个人喜欢用string.Format方式来连接字符串,尤其是在有多个变量、字符常量等要组合成字符串时,我觉得string.Format比较方便,比如:
string.Format("Script is:{0}, Run time is:{1}", script, nTime);
等这些情况用string.Format看起来要舒服些,但是经过我的测试,我得出的结论是能不能string.Format就不用,比如上面的就改为:
"Script is:" + script + ", Run time is:" + nTime.ToString();
只是这样写看起不舒服而已,呵呵。
...全文
1184 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chequan 2005-06-06
  • 打赏
  • 举报
回复
这是我遇到的,说出来大家也可以借鉴。
mengshuai1982 2005-06-06
  • 打赏
  • 举报
回复
好!感谢楼主,楼主真是个好人,像楼主这样的人不多了!
Nicholasqpl 2005-06-06
  • 打赏
  • 举报
回复
楼住真细心,学习!!
勤奋的阿拉丁 2005-06-06
  • 打赏
  • 举报
回复
没注意过,我一会儿试下!
接分!
xu770 2005-06-06
  • 打赏
  • 举报
回复
谢谢楼主,接分哦!
wlzbaby 2005-06-06
  • 打赏
  • 举报
回复
楼主是在传授经验吧

感谢

顺便接分

呵呵

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧