Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

文字列連結の処理時間を検証する

MSDNフォーラムで以下の投稿がありました。
DBのテーブルからレコード数によって文字列として作成し利用する方法
たとえばテーブルに レコードが3レコードあるとき , 1 TIME, 2 TIME, 3 TIME レコードが5レコードあるとき , 1 TIME, 2 TIME, 3 TIME, 4 TIME, 5 TIME というように 文字列を作成するにはどのような方法があるでしょうか? ...

よい機会なので、文字列連結の処理時間を計測してみることにしました。検証は以下のコードで行いました。

Stopwatch w = new Stopwatch();
w.Start();

for (int i = 1; i <= 10000; i++) {
    // 文字列連結処理
}

w.Stop();
Console.WriteLine("処理時間:{0}ミリ秒", w.ElapsedMilliseconds);
連結方法 コード 処理時間(ミリ秒)
単純な連結 s += ", " + i.ToString("d") + " TIME"; 1695
string.Format s += string.Format(", {0} TIME", i); 1641
string.Concat s = string.Concat(s, ", " , i, " TIME"); 1953
StringBuilder s.AppendFormat(", {0} TIME", i); 13

やっぱりStringBuilderが圧倒的に速いですね。