ASP.NET技巧之StringBuilder類的使用
StringBuilder類的使用在ASP.NET技巧中也是有相當(dāng)重要的地位的,在字符串的處理上StringBuilder類要更加出色一點(diǎn)。
字符串在.NET框架中是不可變的,這意味著改變字符串的操作符和方法會(huì)返回字符串的改變后的拷貝,這意味著性能還有提高的空間。當(dāng)進(jìn)行大量的字符串操作時(shí),使用StringBuilder類就是一種比較好的選擇了。
ASP.NET技巧之StringBuilder類的使用是如何的呢?下面的代碼測(cè)試用二種方式從10000個(gè)子字符串中生成字符串所需要的時(shí)間。***次使用了一個(gè)簡(jiǎn)單的字符串串聯(lián)操作;第二次使用了StringBuilder類。要想查看結(jié)果字符串,可以去掉下面的代碼中注解行的注解符號(hào):
- <%@ 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 = "";
 - // 首先執(zhí)行字符串連接操作
 - 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類進(jìn)行同樣的操作
 - 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>
 
二種方式的差別是相當(dāng)大的:使用StringBuilder類的Append方法的速度比使用字符串連接的速度快近200倍。
ASP.NET技巧之StringBuilder類的使用情況就向你介紹到這里,希望對(duì)你有所幫助。
【編輯推薦】















 
 
 
 
 
 
 