Webアプリで、文字列を分割し、リンク名または文字列のコレクションに割り当てています。Webアプリケーションにstringbuilderを使用することでパフォーマンスに大きなメリットがありますか?
編集:2つの機能:リンクを5〜10個の文字列に分割します。別の文字列に再パッケージ化する。また、リンクがクリックされるたびに、一度に1つの文字列をリンクに追加します。
Webアプリで、文字列を分割し、リンク名または文字列のコレクションに割り当てています。Webアプリケーションにstringbuilderを使用することでパフォーマンスに大きなメリットがありますか?
編集:2つの機能:リンクを5〜10個の文字列に分割します。別の文字列に再パッケージ化する。また、リンクがクリックされるたびに、一度に1つの文字列をリンクに追加します。
いくつの文字列を連結しますか? どれだけの数が存在するかを確実に知っていますか、それともデータベース内のレコードの数などに依存しますか?
詳細とガイドラインについては、このテーマに関する私の記事を参照してください。ただし、基本的には、Web アプリを使用していても、StringBuilder を使用する場合と比較して、文字列連結のコストが高いことに違いはありません。
編集: 残念ながら、あなたが何をしているのかという質問からはまだ完全には明らかではありません. 連結する文字列の固定セットがあり、すべてを一度に実行できる場合は、連結を使用する方が高速で、おそらく読みやすいでしょう。例えば:
string faster = first + " " + second + " " + third + "; " + fourth;
string slower = new StringBuilder().Append(first)
.Append(" ")
.Append(second)
.Append(" ")
.Append(third)
.Append("; ")
.Append(fourth)
.ToString();
別の方法として、もちろんフォーマット文字列を使用することもできます。これはおそらく最も遅いかもしれませんが、最も読みやすいです:
string readable = string.Format("{0} {1} {2}; {3}",
first, second, third, fourth);
ただし、「毎回リンクを追加する」という質問の部分では、その側面に StringBuilder を使用することを提案しています。自然にループにつながるものはすべて、StringBuilder を使用する方が効率的です (中程度から多数の場合)。
はい、通常の文字列の連結はコストがかかります (実際には文字列を別の文字列の末尾に追加します)。文字列が変更されるたびに、.net は古い文字列を削除し、新しい値で新しい文字列を作成します。これは不変オブジェクトです。
編集:
Stringbuilder は注意して使用し、他のアプローチと同様に評価する必要があります。場合によっては、2 つの文字列を結合する方が効率的であり、ケースバイケースで評価する必要があります。
文字列の連結については、Jon Skeet によるこの優れた記事をご覧ください。
Web アプリケーションまたは winforms アプリケーションでパフォーマンスが異なるのはなぜですか?
メモリとオブジェクトの割り当てのため、stringbuilder の使用は適切な方法です。コードをビルドする理由に関係なく、ルールは適用されます。
反復回数の多いループで文字列を作成する場合は、stringbuilder を使用することをお勧めします。それ以外の場合は、文字列連結が最善の策です。
最初に、まだこのアプリケーションを書いていますか? はいの場合は、パフォーマンスのチューニングを停止してください。第二に、速度よりも正確性を優先します。明らかな理由から、読みやすさは長期的にははるかに重要です。第三に、私たちはあなたが書いている正確な状況とコードを知りません。このマイクロ最適化がコードのパフォーマンスにとって重要かどうかについて、私たちはアドバイスできません。違いを測定します。Red Gate の Ants Profiler を強くお勧めします。