string和StringBuilder比較

來源:互聯網
上載者:User

1.string與StringBuilder的區別。

string對象是不可變的。包括長度或者其中的任何字元都是不可以改變的。

string @string = "a";
@string = @string + "b";

 以上代碼讓人誤以為@string是能夠增加長度的。其實第二句代碼是重新建立了一個新的對象,而第一個對象被丟棄,它將成為垃圾收集器收集的對象。

C#中不能使用new string()來構造一個string對象。假如可以,以上代碼相當於:

string @string = new string("a");
@string = new string("a"+"b");

StringBuilder是可變的。它是專門用於對字串和字元執行動態操作的類。

用StringBuilder實現:

StringBuilder stringBuilder = new StringBuilder("a");
stringBuilder.Append("b");

StringBuilder在內部有一個足夠長的字元數組用於存放字串對象,當字串長度沒超過字元數組長度時,所有操作都是針對同一個字元數組。當長度超過時,StringBuilder將自動建立一個更長的數組,把原來的資料複製到新數組中。

2.字串操作效能比較。

讓string和StringBuilder執行相同的操作:迴圈追加一個字串"a"。

        public static void CompareString()
        ...{
            UseString();
            UseStringBuilder();
        }

        private static void UseString()
        ...{
            string @string = "";

            DateTime startTime = DateTime.Now;
            for (int i = 0; i < 10000; i++)
            ...{
                @string += "a";
            }
            DateTime endTime = DateTime.Now;
            TimeSpan timeSpan = endTime - startTime;
            Console.WriteLine(timeSpan.ToString());
        }
        private static void UseStringBuilder()
        ...{
            StringBuilder stringBuilder = new StringBuilder();

            DateTime startTime = DateTime.Now;
            for (int i = 0; i < 1000000; i++)
            ...{
                stringBuilder.Append("a");
            }
            DateTime endTime = DateTime.Now;
            TimeSpan timeSpan = endTime - startTime;
            Console.WriteLine(timeSpan.ToString());
        }

運行CompareString()函數得到以下結果:

  運行次數 時間
string 1萬次 0.078125秒
StringBuilder 一百萬次 0.046875秒

結論:使用StringBuilder對字串動態追加的速度是string的200倍左右。

補充:針對不同的字串長度和不同的操作,比如Remove,效能表現會各不一樣。需要一個一個測試。

 

摘自:http://blog.csdn.net/xiaomin98/archive/2008/01/15/2045002.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.