ハードディスクからファイルを読み取り、ファイル内のデータに対して何らかの処理を行う C++ プログラムがあります。ファイルの読み取りに標準の Win32 API を使用しています。私の問題は、このプログラムがときどき非常に高速であるのに、突然、以前の速度の 1/6 に遅くなることです。複数の実行で同じファイルを何度も読み取ると、通常、最初の実行が最も遅くなります。その後、他のファイルセットを読み取るまで速度を維持します。したがって、私の明らかな推測は、ディスク アクセス時間をプロファイリングすることでした。perfmon ユーティリティを使用して、プログラムの IO Read Bytes/sec を測定しました。そして、予想通り、読み取ったバイト数に大きな差 (約 5 倍) がありました。私の質問は次のとおりです。
(1)。OS (私の場合は Windows) は、最近読み取ったファイルをどこかにキャッシュして、その後の読み込みを高速化しますか?
(2)。読み取ったすべてのファイルが同じディレクトリに存在することを保証できる場合、それらをハードディスクに配置して、ディスク アクセス時間を短縮する方法はありますか?
このために私にできることはありますか?