StringBuilder 与string 执行替换时的效率测试
2008-10-07 10:56
465 查看
测试代码如下:
StringBuilder strBuilder = new StringBuilder();
while (strBuilder.Length < 10000)
strBuilder.Append("声明:本源码及资源 (www.ssssss.com) 收集整理后提供下载");
string str = strBuilder.ToString();
DateTime s = DateTime.Now;
TimeSpan ts = DateTime.Now - s;
int i = 0, n = 50000;
s = DateTime.Now;
while (i++ < n)
//strBuilder = strBuilder.Replace("w", "a");
strBuilder.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("StringBuilder 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
i = 0;
s = DateTime.Now;
while (i++ < n)
//str = str.Replace("w", "a");
str.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("string 替换{0}次/t 总计时间{1}毫秒" ,n, ts.TotalMilliseconds));
s = DateTime.Now;
上面结果输出
StringBuilder 替换50000次 总计时间5640.625毫秒
string 替换50000次 总计时间8609.375毫秒
而如果将第一次替换结果赋值给数据源后,即:
StringBuilder strBuilder = new StringBuilder();
while (strBuilder.Length < 10000)
strBuilder.Append("声明:本源码及资源 (www.ssssss.com) 收集整理后提供下载");
string str = strBuilder.ToString();
DateTime s = DateTime.Now;
TimeSpan ts = DateTime.Now - s;
int i = 0, n = 50000;
s = DateTime.Now;
while (i++ < n)
strBuilder = strBuilder.Replace("s", "后提供下载");
//strBuilder.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("StringBuilder 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
i = 0;
s = DateTime.Now;
while (i++ < n)
str = str.Replace("s", "后提供下载");
//str.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("string 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
s = DateTime.Now;
Console.WriteLine("end");
Console.ReadLine();
结果为:
StringBuilder 替换50000次 总计时间5640.625毫秒
string 替换50000次 总计时间3750毫秒
可以看出,如果搜索字符在字符串中包含大量时,StringBuilder 会比string 速度快,而如果检索字符串在源字符串中不包含或包含少量时string 速度快.
StringBuilder strBuilder = new StringBuilder();
while (strBuilder.Length < 10000)
strBuilder.Append("声明:本源码及资源 (www.ssssss.com) 收集整理后提供下载");
string str = strBuilder.ToString();
DateTime s = DateTime.Now;
TimeSpan ts = DateTime.Now - s;
int i = 0, n = 50000;
s = DateTime.Now;
while (i++ < n)
//strBuilder = strBuilder.Replace("w", "a");
strBuilder.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("StringBuilder 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
i = 0;
s = DateTime.Now;
while (i++ < n)
//str = str.Replace("w", "a");
str.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("string 替换{0}次/t 总计时间{1}毫秒" ,n, ts.TotalMilliseconds));
s = DateTime.Now;
上面结果输出
StringBuilder 替换50000次 总计时间5640.625毫秒
string 替换50000次 总计时间8609.375毫秒
而如果将第一次替换结果赋值给数据源后,即:
StringBuilder strBuilder = new StringBuilder();
while (strBuilder.Length < 10000)
strBuilder.Append("声明:本源码及资源 (www.ssssss.com) 收集整理后提供下载");
string str = strBuilder.ToString();
DateTime s = DateTime.Now;
TimeSpan ts = DateTime.Now - s;
int i = 0, n = 50000;
s = DateTime.Now;
while (i++ < n)
strBuilder = strBuilder.Replace("s", "后提供下载");
//strBuilder.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("StringBuilder 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
i = 0;
s = DateTime.Now;
while (i++ < n)
str = str.Replace("s", "后提供下载");
//str.Replace("s", "后提供下载");
ts = DateTime.Now - s;
System.Diagnostics.Debug.WriteLine(string.Format("string 替换{0}次/t 总计时间{1}毫秒", n, ts.TotalMilliseconds));
s = DateTime.Now;
Console.WriteLine("end");
Console.ReadLine();
结果为:
StringBuilder 替换50000次 总计时间5640.625毫秒
string 替换50000次 总计时间3750毫秒
可以看出,如果搜索字符在字符串中包含大量时,StringBuilder 会比string 速度快,而如果检索字符串在源字符串中不包含或包含少量时string 速度快.
相关文章推荐
- String, StringBuffer, StringBuilder拼接字符串的执行效率比较
- C#基础——String和StringBuilder效率测试
- String StringBuffer StringBuilder有什么区别?它们之间的执行效率有什么不同?
- 测试下String和StringBuilder的效率
- java String和StringBuilder的执行效率
- 关于String和StringBuilder的效率问题
- 巧用getdate()测试你的sql执行效率
- JAVA中,字符串STRING与STRINGBUILDER的效率差异
- String+String和StringBuilder.append(String)的效率和区别
- 测试String和ByteArr的分析效率
- 简单的测试一下String和StringBuilder是值传递还是引用传递
- sql语句执行效率测试的sql语句。
- String、StringBuffer、StringBuilder 性能测试
- SQL语句执行效率测试
- 如何测试sql语句性能,提高执行效率,sql2008
- String,StringBuffer,StringBuilder效率优先关系说明
- c# 计算程序执行时间,计算一段代码执行所用的时间,测试效率
- 测试String和StringBuffer效率
- 关于在IE和FireFox下ASP.NET AJAX框架的StringBuilder对象效率的测试
- String.Format还是StringBuilder 效率?