StringBuilder类的使用在ASP.NET技巧中也是有相当重要的地位的,在字符串的处理上StringBuilder类要更加出色一点。
字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着性能还有提高的空间。当进行大量的字符串操作时,使用StringBuilder类就是一种比较好的选择了。
ASP.NET技巧之StringBuilder类的使用是如何的呢?下面的代码测试用二种方式从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倍。
ASP.NET技巧之StringBuilder类的使用情况就向你介绍到这里,希望对你有所帮助。
【编辑推荐】