それ以降の数ギガバイトのファイルの読み取りが速くなるのはなぜですか?


0

Windows 7マシン上でアルゴリズムテストソフトウェアを実行しています。これは、特定のデータファイルで初めて実行したときに、後続の実行時よりも3〜5倍遅く実行されます。私たちのアルゴリズムは、ファイルを一度に数百バイトずつ読み、50回の読み込み操作ごとに1つの結果を書き戻すだけです。

Windowsのどこかに固有のキャッシング(3GBのファイルではありそうにないと思われるでしょうか?)または他の何かがありますか?最初の走りをスピードアップする方法はありますか?


はい、Windowsにはこれを担当する可能性のあるキャッシュがあります。 msdn.microsoft.com/ja-jp/library/windows/desktop/…
Martin von Wittich

特定のファイルに対して一時的に無効にする方法、または一般的に我々が見ていることを確認する方法はありますか
Jon Cage

まあ、MSDNによると、あなたはフラグを使用して特定のファイルのキャッシュを無効にすることができます FILE_FLAG_NO_BUFFERING の中に CreateFile コール。コードを変更できない場合は、おそらく別の方法に頼らなければならないでしょう。実行の間にキャッシュを空にすることができます。 stackoverflow.com/questions/478340/…
Martin von Wittich

その回答をMartinという回答として投稿した場合は、それを受け入れます。私はあなたが提供したリンクのソフトウェアを使ってキャッシュからファイルをフラッシュすることができました、そしてその結果一貫したベンチマーク結果を生み出しました:)
Jon Cage

答えとして投稿しました:)
Martin von Wittich

回答:


2

Windowsのどこかに固有のキャッシュがありますか(3GBファイルではありそうもないようです)。

はい、 Windowsはこれに責任があるかもしれないキャッシュを持っています

リンクされたMSDNの記事によると、CreateFile呼び出しでフラグFILE_FLAG_NO_BUFFERINGを使って特定のファイルのキャッシュを無効にすることができます。コードを変更できない場合は、代わりに SysInternals RAMMapアプリ ベンチマーク実行の間にキャッシュをリセットします。

詳細については、SOに関するこの関連投稿を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.