測試環境
- OS:Windows 7 64bit
- IDE:Visual Studio 2010
- Project Type:Web From Developer
- Framework: ASP.NET 4
MSDN StringBuilder官方說明引用:
- String 物件是不可變動的。 每次您使用 System.String 類別的其中一個方法時,就會在記憶體中建立新的字串物件,而這需要為這個新物件配置新的記憶體空間。 當您需要重複修改字串時,建立新的 String 物件可能會耗用相當多的資源。 當您只要修改字串,但是不要建立新的物件時,就可以使用System.Text.StringBuilder 類別。
例如,在迴圈中串連多個字串時,使用 StringBuilder 類別可增加效能。
測試範例碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//StringBuilder namespace
using System.Text;
//StopWatch namespace
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string sg = "";
StringBuilder sb = new StringBuilder();
//程序計時器
Stopwatch sw = new Stopwatch();
//loop count 一萬次
int count = 10000;
//計時器開始計時
sw.Start();
for (int i = 0; i < count; i++)
{
//如同 s += (i + abcdefghijklmnopqrstuvwxyz);
sb.Append(i);
sb.Append("abcdefghijklmnopqrstuvwxyz");
}
//計時器中止
sw.Stop();
//輸出到瀏覽器上,</br是瀏覽器上的斷行>
//1ms = 0.001秒
Response.Write ("StringBuilder執行時間" + sw.ElapsedMilliseconds + "ms" + "</br>");
//計時器重置
sw.Reset();
sw.Start();
for (int j = 0; j < count; j++)
{
sg += j + "abcdefghijklmnopqrstuvwxyz";
}
sw.Stop();
Response.Write("String執行時間" + sw.ElapsedMilliseconds + "ms" + "</br>");
}
}
輸出結果:
StringBuilder執行時間6ms
String執行時間5108ms
String執行時間5108ms
備註:
- 但是要注意,若是固定格式的靜態字串,使用StringBuilder反而效能會變差。
參考資料:
- MSDN StringBuilder 類別
- MSDN 使用 StringBuilder 類別
沒有留言:
張貼留言