连接字符串(直接+与 stringbuilder)



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

原文地址:https://www.cnblogs.com/0banana0/p/2053119.html