string類與StringBuilder類性能比較

作者: 云飛揚IT  來源: 博客園  發布時間: 2009-11-02 10:26  閱讀: 1888 次  推薦: 0   原文鏈接   [收藏]  

我們都知道StringBuilder的性能要比string類,是否具體測試過呢,我這里就給出這個程序供測試,一個是Timing類,用來計算時間的。另外一個類就是分別建立string,和stringbuider 類建立100,1000,10000,100000字符連接進行比較。

using System;
using System.Diagnostics;
namespace DataStruct7
{
   public class Timing
    {
        TimeSpan duration;//時間差
        public Timing()
        {
            duration = new TimeSpan(0);
        }
        //開始時間
        public void stopTime()
        {
            duration = Process.GetCurrentProcess().TotalProcessorTime;
        }
       //終止時間
        public void startTime()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
       //返回結果
        public TimeSpan Result()
        {
            return duration;
        }
    }
}

另外個類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataStruct7
{
    class Program
    {
        static void Main()
        {
            int size = 100;
            Timing timeSB = new Timing();
            Timing timeST = new Timing();

            Console.WriteLine();
            for (int i = 0; i <= 3; i++)
            {
                timeSB.startTime();
                BuildSB(size);
                timeSB.stopTime();
                timeST.startTime();
                BuildString(size);
                timeST.stopTime();
                Console.WriteLine("時間(單位毫秒)創建 StringBuilder " + "對象有 " +
 size +" 字符需要的時間: " + timeSB.Result().TotalMilliseconds);
                Console.WriteLine("時間(單位毫秒)創建 String  " + "對象有" + 
size + " 字符需要的時間: " + timeST.Result().TotalMilliseconds);
                Console.WriteLine();
                size *= 10;
            }
        }
        //創建StringBuilder連接
        static void BuildSB(int size)
        {
            StringBuilder sbObject = new StringBuilder();
            for (int i = 0; i <= size; i++)
                sbObject.Append("a");
        }
       //創建string連接
        static void BuildString(int size)
        {
            string stringObject = "";
            for (int i = 0; i <= size; i++)
                stringObject += "a";
        }
    }
}
0
0
 
 
 

文章列表

全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()