6

.Designer.csで生成されたクラス( )で「キャッシュされたResourceManagerインスタンス」を使用する場合と比較して、ResourceManagerリクエストごとに新しい.NETを作成することのパフォーマンス(またはその他)への影響は何ですか?new ResourceManger(myResourceType.FullName, myResourceType.Assembly)MyResourceType.ResourceManager

.resx ファイルを使用して ASP.NET MVC 3 アプリケーションのコンテキストで作業しています。

編集: 新しいオブジェクトにメモリを割り当てるコスト以外の意味に興味があります。

編集: の MSDN ドキュメントを見るとResourceManager.ReleaseAllResources、次のように記載されています。

This method will shrink the working set in a running application. Any future resource lookups on this ResourceManager will be as extensive as the first lookup, since it will need to search and load resources again.

これは、リソース セットの最初のオープンにコストがかかることを暗示しているように思われます。これは、リクエストごとに新しいマネージャーを作成するとコストがかかる可能性があることを示唆しています。ただし、ドキュメントでは、リソース マネージャーの有効期間/スコープに関するベスト プラクティスは提案されていません。

4

2 に答える 2

4

キャッシュされたマネージャーを使用する(各リソースタイプの静的なキャッシュされたマネージャーを見つけるためにリフレクションを使用した)ことと、キーアクセスごとに新しいマネージャーを使用することの違いについて、いくつかの基本的なプロファイリング(MiniProfilerを使用)を行いました。結果は、新しいマネージャーが約45倍の時間がかかったことを示唆しており、キャッシュされたマネージャーのアプローチを使用することには実際のパフォーマンス上の利点があることを私に示唆しています。ただし、どちらのアプローチも非常に高速であったため、実際には違いはそれほど重要ではありません。

于 2012-08-11T02:46:45.670 に答える
0

オブジェクトの作成時にオブジェクトの割り当てがあります。

これは、オブジェクトを何度も作成すると、パフォーマンスとメモリに影響することを意味します。

それを試して、ガベージ コレクション サイクルの数 (パフォーマンス カウンターを使用) と、一度 (プロセスごとに) 作成される「キャッシュされた」リソース マネージャー インスタンスの量を確認することができます。そのため、不要な割り当てはありません。

于 2012-06-22T16:34:59.307 に答える