使用StringBuilder类与使用简单字符串连接要快的多

字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着性能还有提高的空间。当进行大量的字符串操作时,使用StringBuilder类就是一种比较好的选择了。

  下面的C#代码测试用二种方式从10000个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串串联操作;第二次使用了StringBuilder类。要想查看结果字符串,可以去掉下面的代码中注解行的注解符号:

WebForm1.aspx.cs文件:
private void Page_Load(object sender, System.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;
   lblstr.Text = elapsedTime.ToString();
   litstr.Text=strWhole;
  }
WebForm2.aspx.cs文件:
private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   int intLimit = 10000;
   DateTime startTime;
   DateTime endTime;
   TimeSpan elapsedTime;
   string strSub;
   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;
   Label lblBuild=new Label();
   lblBuild.Text = elapsedTime.ToString();
   Literal litCon=new Literal();
   litCon.Text=sb.ToString();

  }
Label控件自行在THML里面加,对比一下。
  

二种方式的差别是相当大的:使用StringBuilder类的Append方法的速度比使用字符串连接的速度快近200倍,

同时也说明了,但字符串量很大的时候,使用简单的字符串链接时内存一下子爆长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值