目前在做一个程序,需要拼接大量的sql语句,一开始弄成之后,速度实在是太慢,然后看了一眼拼sql语句那块的代码,查了一下stringbuilder的资料之后,决定换用stringbuilder。很多资料上都告诉我们,在频繁的操作字符串的时候,使用stringbuilder提供更优秀的性能和效率,下面是亲测的程序和结果,一目了然。
static void Main(string[] args)
{
var teststr1 = "";
DateTime a = DateTime.Now;
for (int i = 0; i < 100000; i++)
{
teststr1 += "abc";
}
DateTime b = DateTime.Now;
var teststr2 = new StringBuilder();
for (int j = 0; j < 100000; j++)
{
teststr2.AppendFormat("abc");
}
DateTime c = DateTime.Now;
Console.WriteLine("字符串拼接时间:" + (b - a).TotalMilliseconds);
Console.WriteLine("字符容器拼接时间:" + (c - b).TotalMilliseconds);
Console.ReadLine();
}
测试结果为,上面的是9768 下面的是0
将 j<100000改成 j<800000,结果为 上面的是9980 下边的是 15.6,那么性能提升率大致为9980*8/15.6 = 5117 性能提升的很明显。测试只简单测试了一两组数据,数据可能存在误差,但性能提升肯定是巨大的。
有想了解原因的同学可以参考 http://www.cnblogs.com/solan/archive/2012/08/06/CSharp09.html