当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

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

发表于: 2012-05-14   作者:aijuans   来源:转载   浏览:
摘要:           之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!         由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!        

 

        之前也看过一些对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 性能差距到底有多大

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
知道“StringBuilder比string性能强”好多年了,近日无聊病发作,就把这两个家伙给动了手术: using
转载自:http://www.cnblogs.com/fancydeepin/archive/2013/04/23/min-snail-speak_String-StringBu
1.先看下测试代码 测试代码如下:(这个是借鉴别人的) package com.gbicc.thread; public class St
(转载请注明原文地址:http://blog.csdn.net/while0/article/details/11130379) 作为CCSprite或CC
  一直对LINQ简洁高效的语法青睐有加,对于经常和资料库,SQL语法打交道的C#开发者来说,LINQ无疑
C#支持两种字符串:规则字符串和逐字字符串。 我先前看到@+“”这种结构处理字符串的时候,也就只是
参考:http://www.blogjava.net/chenpengyi/archive/2006/05/04/44492.html 关于String的+操作和Str
String 定义的对象不能被修改,修改其实是创建了一个新的对象。 如 : String s1 = "1"; s1 = s1+ "2
在实际开发中,我们会经常使用到字符串连接的操作,以前我习惯喜欢用String的‘+’来操作,觉得非常
先来看以下问题,以下代码创建了几个对象? String s1=new String("abc"); 网上比较流行的说法是创
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号