0

ファイル マッピングは優れていますが、32 ビット システムの比較的大きなファイルの場合は、それを忘れて、すべてを一般的なファイル I/O で実装する必要があります。大規模なランダム読み取りと書き込みの場合、システム キャッシュはファイル マッピングとほぼ同じように機能します。しかし、小さなファイル領域に関する小さな操作の場合、違いは非常に大きく、ファイル I/O は、ファイル マッピング ファイルの同等の操作よりも 10 倍遅くなります。後者は主に、いくつかの小さなアクションであっても、SetFilePointer、ReadFile、WriteFile の複数の呼び出しが原因です。

したがって、小さな読み取り/書き込みでは効果的に機能する何らかのキャッシュ (または何らかのトリック) を実装または使用したいと思いますが、大規模な操作では Windows が素晴らしい仕事をしているので、複雑なものは必要ありません。これに対する既知のアプローチはありますか?

ありがとう

マックス

4

1 に答える 1

0

他の人が将来同様のアプローチを検討するために自分の質問に答える

ファイルで複数のバッファリングされたマップされたビューをサポートするのが最善のようです。この場合、配列はメモリ ブロック (Vie) へのポインターへの高速アクセスを可能にし、要求されたオフセットに基づいて計算されたポインターが有効な場合は、データにアクセスする必要があります。ある限界まで。読み取りと書き込みの両方でこれを比較的迅速に実装しましたが、結果は非常に有望です

于 2011-01-14T16:29:58.550 に答える