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