WebアプリケーションでStringBuilderを使用する価値はありますか?

StackOverflow https://stackoverflow.com/questions/470944

  •  19-08-2019
  •  | 
  •  

質問

Webアプリでは、文字列を分割し、リンク名または文字列のコレクションに割り当てています。 Webアプリケーションにstringbuilderを使用すると、パフォーマンスが大幅に向上しますか?

EDIT:2つの機能:リンクを5〜10個の文字列に分割します。その後、別の文字列に再パッケージします。また、リンクがクリックされるたびに、リンクに一度に1つの文字列を追加します。

役に立ちましたか?

解決

連結する文字列はいくつですか?確実にいくつあるか、またはデータベース内のレコード数などに依存していますか?

詳細とガイドラインについては、このテーマに関する私の記事をご覧ください-基本的に、ウェブアプリ内にいることは、StringBuilderを使用する場合と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);

質問の<!> quot;毎回リンクを追加する<!> quot;ただし、その側面にはStringBuilderを使用することをお勧めします-StringBuilderを使用すると、自然にループにつながるものはすべて(中規模から大規模の数に対して)より効率的です。

他のヒント

Jon Skeetによるこの優れた記事をご覧ください。文字列を連結します。

はい、通常の文字列の連結は高価です(実際に文字列を別の文字列の最後に追加する)。文字列が変更されるたびに、.netは古い文字列を削除し、新しい値で新しい文字列を作成します。不変オブジェクトです。

編集:

Stringbuilderは注意して使用し、他のアプローチと同様に評価する必要があります。 2つの文字列を一緒に連結する方が効率的な場合があり、ケースバイケースで評価する必要があります。

Atwoodにはこれに関連する興味深い記事があります。

Webアプリケーションまたはwinformsアプリケーションでパフォーマンスが異なるのはなぜですか?

stringbuilderを使用することは、メモリとオブジェクトの割り当てのために良い習慣です。コードを作成する理由に関係なく、ルールは適用されます。

繰り返し回数の多いループで文字列を作成する場合は、stringbuilderを使用することをお勧めします。それ以外の場合は、文字列の連結が最善策です。

まず、あなたはまだこのアプリケーションを書いていますか?はいの場合、パフォーマンスチューニングを停止してください! 第二に、速度よりも正確さを優先します。明らかな理由から、長期的には読みやすさが非常に重要です。 第三に、私たちはあなたが書いている正確な状況とコードを知りません。このマイクロ最適化がコードのパフォーマンスにとって重要であるかどうかを本当にアドバイスすることはできません。違いを測定します。 Red GateのAnts Profilerを強くお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top