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


之前也看過一些對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萬的的情況下進行測試的,

這樣基本已經可以滿足我們的要求了!

寫程序注意細節,尤其是在搭建比較大型的項目時,細節可能就決定了成敗!

關於造成這種情況的原因,大家可以參考:http://www.cnblogs.com/csdnit/archive/2012/05/09/2492210.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM