2016-05-13 25 views
0

組み込みリソースは、バイナリファイルとしてファイルをコンパイルするためにのみ使用されますか?埋め込みリソース - resx - performance - C#

パフォーマンス上の理由から組み込みリソースを使用することをお勧めしますか?いくつかのキャッシュ戦略、あるいは:

この質問は、同じパフォーマンス上の利点があり、2つのケースで埋め込みリソースとして保存

  • XMLファイル
  • RESXファイル(文字列)

に関する(ソースコード/アセンブリのように管理することができるので)そのようなものもあります。

resxではなくexempleのために、最近作成したハッシュテーブルを使用できます。私の場合、ハッシュテーブルはメモリに永遠にとどまるほど大きいことがあります。ですからResxはキャッシュ戦略の助けとなりますか?

私はツリーオブジェクトに対して同じ問題があります。 XML埋め込みファイルからこのファイルを使用すると、私は助けにならなかったのでしょうか、またはすべてのキャッシュ戦略を実装する必要がありますか?

は、埋め込まれたリソースの機能は、主にパフォーマンス上の理由のためを添加し、

答えて

2

を考えています。 Windowsのようなデマンド・ページの仮想メモリ・オペレーティング・システムで高速化する方法はありません。リソースの内容を読み取るためにメモリマップされたファイルを最大限に活用できます。

これは、別のファイルを読むよりも大したことではありませんが、ファイルを探す必要はありません。これは通常、小規模なリソースではコストのかかる操作であり、アプリのコールドスタート時間に大きな影響を与えます。配備するファイルのサイズが大きくないことは、実用上のメリットです。

もちろんメモリを占有していますが、仮想のメモリです。プロセッサーにちょうどいい数字、4096バイトごとに1つ。また、安価な種類の仮想メモリは、ページングファイルの代わりに実行可能ファイルによってバックアップされます。プログラム内のリソースにアクセスするまでは、実際に支払いをしてRAMを使い始めることはありません。そのRAMは通常、繰り返しリソースを使用しない限りすぐに解放されます。これは、埋め込み可能なリソースデータの量に上限を設定し、2ギガバイトに達します。

XMLリソースとして開始するのはビルド時のみで、Resgen.exeツールは実行可能ファイルに埋め込まれる前にバイナリBLOBに変換されます。 XMLの利点は、IDEでうまくいくことと、元のアートワークを忘れた後に元のリソースを簡単に復元できることです。

関連する問題