string与StringBuilder拼接字符串的性能差距有多大

 我来答
ifeilong
2016-09-12 · TA获得超过8068个赞
知道大有可为答主
回答量:1187
采纳率:100%
帮助的人:811万
展开全部

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


前段时间抽时间写了一个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的性能问题看上去可能很多人觉得没什么,但是一旦操作的次数多了,那么速度就很明显的显示出来了!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式