private static readonly string STR = "0123456789"; /************************************
普通连接操作实际上使用了String.Concat方法,每次都会生成新的字符串
*************************************/ private static string NormalConcat(int count) { var result = ""; for (int i = 0; i < count; i++) result += STR; return result; } /*****************************
几乎所有时间都是消耗在Append操作上的(这是废话)。而在Append方法中,AppendInPlace和GetNewString方法都占用了较多的比例。
从上次的代码分析中我们知道,AppendInPlace方法是将新的字符串复制到原字符序列(也就是那个“容器”)的后面,
而GetNewString的作用便是创建一个新的,容量加倍字符串(容器)——它的主要消耗都在GetStringForStringBuilder方法上
******************************/ private static string StringBuilder(int count) { var builder = new StringBuilder(); for (int i = 0; i < count; i++) builder.Append(STR); return builder.ToString(); }
更多讨论:http://blog.zhaojie.me/2009/11/string-concat-perf-1-benchmark.html