C#

C#の単純な文字列連結で最も高速な方法は?

More than 1 year has passed since last update.

文字列連結の方法はケースバイケースで使い分けますが、単純な場合にどれが早いのかと疑問に思ったので計測。

コード

var c = 10000000;
var sw = new System.Diagnostics.Stopwatch();

// StringBuilder
sw.Start();
for (int i = 0; i < c; i++)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("%").Append(i).Append("%");
    var str = sb.ToString();
}
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());

// +演算子
sw.Restart();
for (int i = 0; i < c; i++)
{
    var str = "%" + i + "%";
}
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());

// string.Format
sw.Restart();
for (int i = 0; i < c; i++)
{
    var str = string.Format("%{0}%", i);
}
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
return;

出力

00:00:01.8321544
00:00:01.6269853
00:00:02.1980389

速度は +演算子 > StringBuilder > string.Format() でした。
単純な処理の場合はつべこべ言わずに+で繋げておけという感じでしょうか。
差がごくわずかなのでstring.Format()で可読性を取るのもアリでしょう。

あくまで単純な例なので実用上は実際に計測してみてください。