之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!
由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!
前段时间抽时间写了一个CMS系统,一开始的时候每秒钟大概能生成200条新闻,可是后来由于新闻系统与购物系统整合后,发现生成速度突然就掉下来了,最快的时候每秒钟也就生成130多条新闻,按照正常的情况下不应该会出现这个问题的,于是从后期整合的代码里面找原因,由于生成新闻的时候,我们都要提取相关商品的相关信息并输出,而且这些都是用string进行拼接的,由于拼接的次数比较频繁,
突然就想到了这个string与StringBuilder的性能的问题,于是我粗略的做了一个小小的测试!
用StringBuilder循环的拼接10000次字符串需要的时间为 0到1毫秒!
代码如下:
long tt = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
StringBuilder start = new StringBuilder();
for(int j=0;j<10000;j++)
{
start.Append("测试测试测试测试测试测试测试测试测试测试测试测试");
}
long mm = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
Response.Write(Convert.ToString( mm-tt));
用string循环的拼接100000次字符串需要的时间为 5500到6000毫秒!
代码如下:
long tt = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
string start =string.Empty;
for(int j=0;j<10000;j++)
{
start += "测试测试测试测试测试测试测试测试测试测试测试测试";
}
long mm = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
Response.Write(Convert.ToString( mm-tt));
我原本用的是100000 次拼接做的测试,StringBuilder仅用了30毫秒,但是用string拼接就执行几分钟没有执行完,所以我就改用10000次来做试验了!
简单的可以概括为,string拼接的次数越多,速度则越慢,而StringBuilder则几乎不怎么变化!
string与StringBuilder的性能问题看上去可能很多人觉得没什么,但是一旦操作的次数多了,那么速度就很明显的显示出来了!
我把所有的关于string的操作都改成了 StringBuilder来操作,再看CMS的生成速度可以达到每秒钟生成300条新闻了!属蛇的人2012年运程属猪的人2012年运程2013年运程2012年运程属虎的人2012年运程
声明:我们的CMS是在配置为 windows2003 vps 服务器, 内存为 1G,数据库为Sqlserver2000,新闻数据量为:20万的的情况下进行测试的,
这样基本已经可以满足我们的要求了!
写程序注意细节,尤其是在搭建比较大型的项目时,细节可能就决定了成败!
更多详细信息请查看 java基础知识 http://www.itchm.com/cainiao/java_basic/
分享到:
相关推荐
String和StringBuilder类的区String和StringBuilder类的区别String和StringBuilder类的区别String和StringBuilder类的区别别
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
测试string的+和String.Format()和StringBuilder.Append()性能差距,一个检测它们时间的测试
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
从内存方面解释Java中String与StringBuilder的性能差异.docx
String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段...
String ,StringBuffer与StringBuilder的区别
stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...
介绍了String、StringBuffer、StringBuilder的使用方法,以及理论知识
本资源为String和StringBuilder效率测试代码,可直接运行,通过测试可以得出清晰的结果
我们通常会发现使用StringBuffer或StringBuilder创建出来的字符串在拼接时回避String要来得快,尤其是StringBuilder,本文就从内存方面解释Java中String与StringBuilder的性能差异,需要的朋友可以参考下
Tedu一段String和StringBuilder
string,stringbuffer,stringbuilder
简单的介绍了String、StringBuffer和StringBuilder的区别
day13-String和StringBuilder 1.String类 1.1字符串的比较【理解】 1.1.1==号的作用 比较基本数据类型:比较的是具体的值 比较引用数据类型:比较的是对象地址值 1.1.2equals方法的作用 方法介绍 示例代码 ...
Java--Java String和StringBuilder。
String,StringBuilder,StringBuffer
String、StringBuilder以及StringBuffer的区别
String及StringBuffer和StringBuilder的区别