Help us understand the problem. What is going on with this article?

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

More than 3 years have 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()で可読性を取るのもアリでしょう。

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

kik4
Webエンジニア
https://kik4.work
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away