質問

しているアプリケーションを受け塊のデータをネットワークに書き込みながらディスク。一度にすべてのチャンクを受けたときは、できる復号化/再結合の単一のファイルになります。

った場合にも使用メモリマップファイルは初のシングルチャンクをディスクに目のシングルファイルをすべて復号化された.

自分の気持ちがされることが有効の場合のみ、もって行ったアイデア。

編集:このC#アプリがないと思うのだけを企画x64版です。では最大のcontigious無料スペース"の問題な関係)

役に立ちましたか?

解決

メモリマップドファイルは、かなり大きいファイルの比較的小さな部分(ビュー)を繰り返しアクセスする必要があるシナリオのために有益です。

このシナリオでは、オペレーティング・システムは、マップされたファイルの唯一の最も最近使用された部分およびアウトページングによるアプリケーションの全体的なメモリ使用量及びページング動作を最適化することができます。

また、メモリマップドファイルは、コピー・オン・ライトなどの興味深い機能を公開することができたり、共有メモリの基礎となる。

あなたのシナリオでは、メモリマップファイルは、チャンクが順不同で到着した場合は、ファイルを組み立てることができます。ただし、事前に最終的なファイルサイズを知っておく必要があります。

また、あなたはチャンクを書き込むために、一度だけファイルにアクセスする必要があります。したがって、明示的に実装された非同期比べてパフォーマンスの利点は、I / Oはほとんどありませんが、正しくファイルライターを実装するために簡単かつ迅速かもしれません。

は、.NET 4では、Microsoftはメモリマップファイルのサポートが追加され、サンプル・コード、例えばといくつかの総合的な記事がありますます。http: //blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspxするます。

他のヒント

メモリマップファイルに主に使われるプロセス間通信、I/O性能を改善しました。

だりすることができるように良いI/Oの実績を教えてください。

嫌いな指摘しましたobiviousがWikipediaとなってい上げの状況...http://en.wikipedia.org/wiki/Memory-mapped_file

具体的には...

メモリにマップされたアプローチはコストを小さなページの断層がブロックのデータが読み込まれるページのキャッシュしていないがマップされ、プロセスの仮想記憶空間です。状況によって、メモリマップファイルI/Oできるので大幅に遅標準のファイルI/O

いるように聞こえるよい説の最適化のために高速になります。なぜ普通のファイルアプローチ、そしてrefactor MMファイル以降の場合必要なのか?"

私は両方のケースが関連していると思います。彼らが来るとして単純に、順不同で、メモリマップドファイル内の適切な場所に、単一のチャンクを書く。これはもちろん、各チャンクは、BitTorrentのダウンローダのように、行くべき場所がわかっている場合にのみ有効です。あなたはチャンクが行くべき場所を知るためにいくつかの余分な分析を実行する必要がある場合は、メモリマップドファイルの利点は、同じ大きさではないかもしれません。

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