拼凑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();

posted @ 2011-07-25 11:33  xujihui  阅读(409)  评论(3编辑  收藏  举报