2009-06-16 15 views
1

私は、ディスクキャッシュが最良の状態になっているときにWindowsプログラムのパフォーマンスを比較しようとしています(プログラムを実行するために必要なファイルがすべてメモリキャッシュにあるとき、この状態になる)、そしてキャッシュが最悪の状態にあるとき、それは完全に空である。OSディスクの読み込みキャッシュを無効にする

キャッシュが完全に空であることを確認するための唯一の方法は、コンピュータを再起動することですが、時間がかかるので理想的ではありません。再起動せずにこれを行う方法はありますか?私は同期しようとしましたが、読み取りキャッシュを無効にしません...

答えて

1

CreateFileへの呼び出しでは、FILE_FLAG_NO_BUFFERINGフラグを含めてください。詳細については、MSDNのCreateFile reference pageを参照してください。特にrequirementsに注意してください。

これを行うためにコードを変更するには多大な努力を払ってください。単純なユーティリティプログラムを作成して、物理メモリより大きなファイルを読み込んでみてください。これはあなたが気にするファイルをファイルシステムのキャッシュからフラッシュするのに十分かもしれません。

+0

このフラグを持つCreateFileは正常に動作しているようですが、フォルダ全体(およびサブフォルダ)に対して実行する方法を探しています。私は無効化する必要があるフォルダに数百万のファイルがあると思うので、すべてのファイルを繰り返し処理しないことを本当に望んでいます。 巨大なファイルを読み込むユーティリティの作成について、キャッシュを空にする方法を保証する方法はありますか?たぶんwindowsは、巨大なファイルのすべてをキャッシュしないようにキャッシュを管理し、さらに多くのファイルのためのスペースを確保します。そうでないかもしれません...実際には私は分かりません。とにかく、私は試して結果を見てみましょう。 –

+0

多数のファイルを反復処理している場合、そのフラグを追加するCreateFile呼び出しは少数しかありませんか?これは、(そのファイルの)キャッシュを無効にしてから、それを開く2ステップのプロセスではなく、読み込み用にファイルを開くことの一部です。 –

関連する問題