程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 使用StringBuilder類

使用StringBuilder類

編輯:.NET實例教程
字符串在.Net框架中是不可變的,這意味著改變字符串的操作符和方法會返回字符串的改變後的拷貝,這意味著性能還有提高的空間。當進行大量的字符串操作時,使用StringBuilder類就是一種比較好的選擇了。
下面的C#代碼測試用二種方式從10000個子字符串中生成字符串所需要的時間。第一次使用了一個簡單的字符串串聯操作;第二次使用了StringBuilder類。要想查看結果字符串,可以去掉下面的代碼中注解行的注解符號:

<%@ Page Language="C#" %>

<script runat="server">
void Page_Load(Object Source, EventArgs E)
{
int intLimit = 10000;
DateTime startTime;
DateTime endTime;
TimeSpan elapsedTime;
string strSub;
string strWhole = "";

// 首先執行字符串連接操作
startTime = DateTime.Now;
for (int i=0; i < intLimit; i++)
{
strSub = i.ToString();
strWhole = strWhole + " " + strSub;
}
endTime = DateTime.Now;
elapsedTime = endTime - startTime;
lblConcat.Text = elapsedTime.ToString();
// lblConcatString.Text = strWhole;

// 使用stringBuilder類進行同樣的操作
startTime = DateTime.Now;
StringBuilder sb = new StringBuilder();
for (int i=0; i < intLimit; i++)
{
strSub = i.ToString();
sb.Append(" ");
sb.Append(strSub);
}
endTime = DateTime.Now;
elapsedTime = endTime - startTime;
lblBuild.Text = elapsedTime.ToString();
// lblBuildString.Text = sb.ToString();
}

</script>

<Html>
<body>
<form runat="server">

<h1>String Concatenation Benchmark</h1>

Concatenation:
<ASP:Label
id="lblConcat"
runat="server"/>

<br/>

<ASP:Label
id="lblConcatString"
runat="server"/>

<br/>
<br/>

StringBuilder:
<ASP:Label
id="lblBuild"
runat="server"/>

<br/>

<ASP:Label
id="lblBuildString"
runat="server"/>

</form>
</body>
</Html>
二種方式的差別是相當大的:使用StringBuilder類的Append方法的速度比使用字符串連接的速度快近200倍 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved