.NetCore2.1のリリース用に編集
.Net Core 2.1のリリースのテストを繰り返すと、次のような結果が得られます。
「Concat」の1000000回の反復には842msかかりました。
「新しい文字列」の1000000回の反復には1009ミリ秒かかりました。
「sb」の1000000回の反復には902msかかりました。
つまり、.Net Core 2.1以降を使用している場合は、それが重要Concat
です。
詳細については、 MSのブログ投稿を参照してください。
私はこれを別の質問の主題にしましたが、ますます、それはこの質問への直接の答えになりつつあります。
をに変換する3つの簡単な方法のパフォーマンステストをいくつか行いましIEnumerable<char>
たstring
。これらの方法は次のとおりです。
新しい文字列
return new string(charSequence.ToArray());
コンキャット
return string.Concat(charSequence)
StringBuilder
var sb = new StringBuilder();
foreach (var c in charSequence)
{
sb.Append(c);
}
return sb.ToString();
私のテストでは、これはリンクされた質問で詳しく説明されています。1000000
繰り返しの場合、次の"Some reasonably small test data"
ような結果が得られます。
「Concat」の1000000回の反復には1597msかかりました。
「新しい文字列」の1000000回の反復には869ミリ秒かかりました。
「StringBuilder」の1000000回の反復には748ミリ秒かかりました。
string.Concat
これは、このタスクに使用する正当な理由がないことを私に示唆しています。シンプルにしたい場合は新しい文字列アプローチを使用し、パフォーマンスが必要な場合はStringBuilderを使用します。
私は自分の主張に注意します。実際には、これらの方法はすべて正常に機能し、これはすべて最適化を超えている可能性があります。