關於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