b00k.jp ~積み上げ式読書ノート~
公開日:
最終更新日:2018/05/18

C# 文字列連結をstringとStringBuilderで行った際のパフォーマンス差異

C#

文字列連結はStringBuilderで行った方がパフォーマンスが良い

C#で文字列連結を行う際は、パフォーマンスの観点から基本的にstringではなく、StringBuilderを使用する。
stringで連結をすると、連結の度にstringオブジェクトが作成される。
また、不要になったstringオブジェクトのガベージコレクションも走る。
オブジェクトの生成、破棄はそれなりにオーバヘッドの高い処理なので、例えばループの中などで生成・破棄を繰り返すと、トータルでかなりの処理時間がかかることもある。

例えば、ループで1万回文字列連結を行った際の所要時間は以下のようになる。
string…125ミリ秒
StringBuilder…37ミリ秒

しかし、少量の場合はstringで連結した方が早い

しかし、いつでもStringBuilderで処理すればいいというわけではなく、少ない量なら+演算子で連結した方が早い。(StringBuilderオブジェクト生成の方がコストが高い)

・string…64ミリ秒(stringオブジェクトを4千万回生成)
・StringBuilder…759ミリ秒(StringBuilderを1千万回生成)

広告

カテゴリー: IT, プログラミング
タグ   :

オススメ記事


  • follow us in feedly
PAGE TOP ↑