C++ で記述されたアプリケーション、Visual Studio 2005 を Windows XP でのみ実行しています。アプリケーションが起動されると、XML を含む多数 (> 20000) のテキスト ファイル (.nfo) が読み取られます。各ファイルは 800 バイトです。
コールド リブート後にアプリケーションを起動すると、ファイルの読み取りに 10 分かかります。ただし、それを閉じて再起動すると、それらを読み取るのに 10 秒しかかかりません。ウォーム リブートを実行すると、10 秒かかります。cacheset ユーティリティを使用してキャッシュをクリアすると、ファイルの読み取りにも 10 秒かかります。コンピューターをコールド リブートした場合、コンピューターに 2 時間触れずにアプリケーションを起動しますが、それでも起動に 10 分かかります。
標準ライブラリ (std) の基本関数を使用して、ファイルを開いたり、読み取ったり、閉じたりします。
この問題は、アプリケーションの実装に直接起因するのではなく、Windows XP に起因すると考えられます。
私の現在の焦点は、Windows XP の Prefetcher にあります。私のアプリケーションには、プリフェッチ ディレクトリにある .pf ファイルがあります。ただし、プリフェッチするファイルのリストに .nfo テキスト ファイルがありません。たとえば、Internet Explorer に関連付けられているプリフェッチ ファイルでは、画像などの一時ファイルがプリフェッチ ファイルにリストされていることがわかります。私のファイルをそのリストに強制的に表示できればと思います。Windowsはディスク上のどこにあるかをすでに知っているため、それらのオープン/読み取り操作は高速になります。
ファイルが DLL と共に .pf プリフェッチ ファイルに配置されないのはなぜですか? ファイルがプリフェッチ ファイルに表示される条件は何ですか?
これは理にかなっていますか?
また、Windows XP に完全なディレクトリまたはファイルのリストを強制的にプリフェッチさせる方法があるかどうかも疑問に思っていました。
パソコンと一緒に販売されている商品化済みの商品です。したがって、OS を微調整するための完全なアクセス権があります。ただし、アプリケーションに極端な変更を加える予定はありません。
よろしく