これがあなたのパフォーマンスに役立つかどうかは正確には分かりませんでした。使用する文字列の数と、それらの文字列のインスタンスを作成する頻度に依存します。インターンは一般的に自動的に行われるので、文字列がインターンされているかどうかを明示的に確認すると、実際にオーバーヘッドが増加し、パフォーマンスが低下する可能性があります。メモリ使用量について言えば、中身の文字列はメモリをより少なく使うことができます。
文字列インターンを使用したい場合は、それを実現するいくつかのより良い方法があります。まず第一に、パブリック文字列定数でいっぱいの静的クラスに要素名をスティックします。あなたのプログラムのソースコードで見つかった文字列リテラルは、確実かつ自動的に受け入れられます。アプリケーションがロードされると、そのような文字列がインターンプールにロードされます。あなたの文字列をコンパイル時のインターン準備の定数として定義できない場合は、String.IsInterned(...)というだけではなく、String.Intern(...)を呼び出します。 ...:String.Intern(...)。 Internメソッドは、文字列がインターンされているかどうかを自動的にチェックし、存在する場合はインターンされたバージョンを返し、そうでない場合はインラインプールに文字列を追加し、そうでない場合はそれを返します。手動でIsInternをチェックする必要はありません。
この場合も、手動で文字列をインターンリングするとパフォーマンスが向上するかどうかはわかりません。定数を使用すると、自動的に最適化された形で自動的に格納されます。これは、定期的に再利用される文字列のパフォーマンスとメモリ使用率を改善するための最良の方法です。正直言って、手動インターンシップから離れ、コンパイラとランタイムが最適化を処理できるようにすることをお勧めします。
- 私はつもり(私はそれはあなたが後にしている本当にではありません知っているが...)...それを自分で試してみて、それがどんな違いがあれば測定 – Rashack
@Rashackそれをテストするには有効な質問だと思っていますが、HTMLやXMLベースのコンテンツなど、テキスト解析に関する直接的な質問はありませんでした。 :) –