程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> string與StringBuilder的新能對比

string與StringBuilder的新能對比

編輯:C#入門知識

關於string與StringBuilder的區別,這裡就不做詳細的說明了,畢竟網上一大堆這方面的文章。這裡我就直接貼出一個新能測試的對比,大家一看就知道它們之間的區別。

首先,還是簡單解釋一下string、StringBuilder;

string對象是不可改變的。每次使用 System.String 類中的方法之一時,都會在內存中創建一個新的字符串對象,這個時候就需要在內存中為該新對象分配新的空間。在對字符串重復執行復制的時候(例如: string a = "1"; a+=1;),與創建新的 String 對象對比,系統開銷會非常大。

StringBuilder 對象是動態對象,長度可變。當修改 StringBuilder 時,它首先會默認一個空間,當長度達到這個容量時,將自動分配新的空間且容量翻倍,所以它是一個可自動變法的對象。

廢話就不說了,直接貼出相關性能測試代碼:

StringBuilder測試代碼

[csharp] 
protected void Button3_Click(object sender, EventArgs e) 
    { 
        long startData = DateTime.Now.Ticks; 
        StringBuilder sb = new StringBuilder(); 
        int count = int.Parse(TextBox2.Text); 
        for (int i = 0; i < count; i++) 
        { 
            sb.Append("測試寫入日志" + i + "," + TextBox1.Text + "\r\t"); 
        } 
        new WriteLog().WriteLog_1("StringBuilder測試寫入日志", sb.ToString()); 
        long endData = DateTime.Now.Ticks; 
        this.TextBox5.Text = TimeSpan.FromTicks((endData - startData)).TotalMilliseconds + ""; 
    } 
StringBuilder測試執行結果

 

 

string測試代碼

[csharp]
protected void Button4_Click(object sender, EventArgs e) 
   { 
       long startData = DateTime.Now.Ticks; 
       string sb = ""; 
       int count = int.Parse(TextBox2.Text); 
       for (int i = 0; i < count; i++) 
       { 
           sb += "測試寫入日志" + i + "," + TextBox1.Text + "\r\t"; 
       } 
       new WriteLog().WriteLog_1("String測試寫入日志", sb); 
       long endData = DateTime.Now.Ticks; 
       this.TextBox5.Text = TimeSpan.FromTicks((endData - startData)).TotalMilliseconds + ""; 
   } 
string測試執行結果


作者:yang_5
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved