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