首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

string与StringBuilder 性能差距终究有多大

2013-11-09 
string与StringBuilder 性能差距到底有多大?? ? ? ? 之前也看过一些对string与StringBuilder的性能分析,总

string与StringBuilder 性能差距到底有多大

?

? ? ? ? 之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!

? ? ? ? 由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!

? ? ? ? 前段时间抽时间写了一个CMS系统,一开始的时候每秒钟大概能生成200条新闻,可是后来由于新闻系统与购物系统整合后,发现生成速度突然就掉下来了,最快的时候每秒钟也就生成130多条新闻,按照正常的情况下不应该会出现这个问题的,于是从后期整合的代码里面找原因,由于生成新闻的时候,我们都要提取相关商品的相关信息并输出,而且这些都是用string进行拼接的,由于拼接的次数比较频繁,

突然就想到了这个string与StringBuilder的性能的问题,于是我粗略的做了一个小小的测试!

? ? ? ? 用StringBuilder循环的拼接10000次字符串需要的时间为 0到1毫秒!

代码如下:

?

  有心人一个。 

12 楼 shuzheng5201314 2012-05-15   这就是首页贴吗? 13 楼 cywhoyi 2012-05-15   1.String每次都分配内存,StringBuilder唯一
2.SB每次开辟更大的空间,容易扩容
3.因条件1,所以采用System.arraycopy方式也不一致 14 楼 ouxitao 2012-05-15   受教了   15 楼 eqzcy 2012-05-15   longfor5 写道不知道楼主用的是java哪个版本?java5和java6中string字符串的拼接底层已经通过StringBuilder进行拼接。只不过在for循环的情况下String字符串拼接会创建多个StringBuilder,而直接用StringBuilder进行拼接只会创建一个StringBuilder。

JDK5.0中新增StringBuilder类,如果如你据说,那还有必要增加这个类吗?还不如直接在String 里实现就可以了. 16 楼 jeekchen 2012-05-15   java6中编译器的对编译时能够确定的字符串连接有做了优化了
但是如果字符串要运行期才能确定的,就必须使用StringBuilder这种方式来提高性能 17 楼 huzhiyong56 2012-05-15   老掉牙的问题了。。 18 楼 lbb6799928 2012-05-15   String StringBuffer StringBuilder 这几个面试的时候经常有考官问.String每次操作的时候都会new一个对象拼接字符,当操作频繁的时候速度自然会慢下来占用内存也多。而StringBuffer和StringBuilder是一个缓冲区,在缓冲区内操作速度肯定比String快,但是StringBuilder是线程不安全的,一般比较常用StringBuffer。 既然提到线程,楼主也可以考虑在生成的时候使用多个线程这样效率会更快些。利用分页的原理一个线程处理N条数据,说的不对的地方请多指教 19 楼 yuyue007 2012-05-15   longfor5 写道不知道楼主用的是java哪个版本?java5和java6中string字符串的拼接底层已经通过StringBuilder进行拼接。只不过在for循环的情况下String字符串拼接会创建多个StringBuilder,而直接用StringBuilder进行拼接只会创建一个StringBuilder。
+1,你可以看一下编译后的字节码,每次追加字符的时候都创建了一个StringBuilder的hellostory 写道

我也觉得是这么回事,不知道LZ是什么情况

热点排行