拼凑string 与 StringBulider.Append()的效率问题
这是个老生常谈的问题,今天特地做个了小例子来测试它们性能上的差距,
不多废话,上代码
两个效率上差距是相当大的,StringBuilder比拼凑string 性能上快了近1500倍,使用拼凑string的方法,在每次都会在内存中开辟一个新的空间给 新的字符串,然后在将这两个对象相连
,而StringBulider是应用类型的变量,
StringBuilder 在创建的时候在堆中生成一片内存空间,如果空间足够就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大
尽量多使用StringBulider对象来对字符串进行拼凑。此文章仅为记录用,有不同意见欢迎讨论
Stopwatch sw = new Stopwatch();
string a = "";
StringBuilder sb = new StringBuilder();
sw.Start();
for (int i = 0; i < 10000; i++)
{
a += "aaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
sw.Stop();
Console.WriteLine("use string total {0}",
sw.ElapsedMilliseconds.ToString());
sw.Reset();
sw.Start();
for (int i = 0; i < 10000; i++)
{
sb.Append("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
sw.Stop();
Console.WriteLine("use StringBuilder total {0}",
sw.ElapsedMilliseconds.ToString());
Console.Read();