StringBuilder 与string 执行替换时的效率测试

测试代码如下:

 

 

 

 

 

 

  1.             StringBuilder strBuilder = new StringBuilder();
  2.             while (strBuilder.Length < 10000)
  3.                 strBuilder.Append("声明:本源码及资源 (www.ssssss.com)  收集整理后提供下载");
  4.             string str = strBuilder.ToString();
  5.             DateTime s = DateTime.Now;
  6.             TimeSpan ts = DateTime.Now - s;
  7.             int i = 0, n = 50000;
  8.             s = DateTime.Now;
  9.             while (i++ < n)
  10.                 //strBuilder = strBuilder.Replace("w", "a");
  11.                 strBuilder.Replace("s""后提供下载");
  12.             ts = DateTime.Now - s;
  13.             System.Diagnostics.Debug.WriteLine(string.Format("StringBuilder 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
  14.             i = 0;
  15.             s = DateTime.Now;
  16.             while (i++ < n)
  17.                 //str = str.Replace("w", "a");
  18.                 str.Replace("s""后提供下载");
  19.             ts = DateTime.Now - s;
  20.             System.Diagnostics.Debug.WriteLine(string.Format("string 替换{0}次/t 总计时间{1}毫秒" ,n, ts.TotalMilliseconds));
  21.             s = DateTime.Now;

上面结果输出

StringBuilder 替换50000次  总计时间5640.625毫秒
string 替换50000次  总计时间8609.375毫秒

 

而如果将第一次替换结果赋值给数据源后,即:

 

  1.    StringBuilder strBuilder = new StringBuilder();
  2.             while (strBuilder.Length < 10000)
  3.                 strBuilder.Append("声明:本源码及资源 (www.ssssss.com)  收集整理后提供下载");
  4.             string str = strBuilder.ToString();
  5.             DateTime s = DateTime.Now;
  6.             TimeSpan ts = DateTime.Now - s;
  7.             int i = 0, n = 50000;
  8.             s = DateTime.Now;
  9.             while (i++ < n)
  10.                 strBuilder = strBuilder.Replace("s""后提供下载");
  11.             //strBuilder.Replace("s", "后提供下载");
  12.             ts = DateTime.Now - s;
  13.             System.Diagnostics.Debug.WriteLine(string.Format("StringBuilder 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
  14.             i = 0;
  15.             s = DateTime.Now;
  16.             while (i++ < n)
  17.                 str = str.Replace("s""后提供下载");
  18.             //str.Replace("s", "后提供下载");
  19.             ts = DateTime.Now - s;
  20.             System.Diagnostics.Debug.WriteLine(string.Format("string 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
  21.             s = DateTime.Now;
  22.             Console.WriteLine("end");
  23.             Console.ReadLine();

结果为:

StringBuilder 替换50000次  总计时间5640.625毫秒
string 替换50000次  总计时间3750毫秒

可以看出,如果搜索字符在字符串中包含大量时,StringBuilder  会比string 速度快,而如果检索字符串在源字符串中不包含或包含少量时string 速度快.

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值