私は以下のような状況のC/C++混在プロジェクトで作業しています。アプリケーション層のプリフェッチシステムを構築する方法
非常に小さなチャンク(まれに大きなチャンクも同様です)を1つずつ順番に処理する必要があります。理想的には、私はそれらを一度連続して読むべきです。このケースでは、大きなチャンクをバッファに読み込んで後で消費する方が、必要なときに即座にそれぞれを読み込むよりも、より良い解決策になると思います。
問題は、どのようにキャッシュサイズのバランスをとるかです。私が利用できる既知のアルゴリズム/ライブラリはありますか?
UPDATEは:君たち返信用
おかげで(タイトルを変更する)と私はボックスで働いキャッシュメカニズムの異なるレベルがあります理解しています。しかし、私の場合は十分ではありません。
私はここで重要なことを忘れたと思います。実際には、エンジンへの読み込みを要求することは私にとってあまりにもコストがかかる既存のフレームワーク上にアプリケーションを構築しています。 (はい、私はエンジンがOSとディスクレベルのキャッシュを利用すると信じています)。そして、私がしようとしているのは確かにアプリケーションレベルのプリフェッチシステムを構築することです。
思考?
これはおそらく、あちこちで一定の読み込みが行われない限り、心配する価値はありません。ディスクは大量のデータをキャッシュできます。私は一般的に64 MBまで考えると、キャッシュに要求したものよりも多くを引き出すことがあります。それ以外にも、セクター分のデータ(おそらく2〜4KB)を引き出すことをお勧めします。 –
最新のOSは、64MBだけでなく、すべての空きメモリをディスクキャッシュとして使用します。 – BatchyX
ドライブに組み込まれているハードウェアを指していたのかもしれません。 –