LRUファイルキャッシュとWindowsディレクトリでファイルを見つけるコスト

.net filesystems performance
LRUファイルキャッシュとWindowsディレクトリでファイルを見つけるコスト

合計で約2GBの250,000個の8KB *ファイルをダウンロードしてキャッシュするアプリケーションがあります。 このキャッシュを更新するとき、最近使用したファイルを削除する必要があります。 *これらの小さなファイルは2つの4KBセクターにまたがっています。

NTFS形式の5400 RPMドライブのディレクトリにあるこのタイプのファイルの名前でファイルハンドルを取得する場合の相対的なコストはいくらですか? 1つのディレクトリにすべての200Kファイルを保存すると、ファイルハンドルの取得に数ミリ秒以上かかるだけですか? ファイルを別のディレクトリに簡単にバケットできます。

Windows 7では、デフォルトでファイルの最終アクセス時間が無効になっています。この機能を有効にするよう管理者に要求したくありません。 メモリ内のファイルアクセス時間の個別のリストを維持する必要があります(アプリの終了時にディスクにシリアル化されますか?)

これらのファイルを1つの大きなフラットファイルに保存することを検討する必要がありますか? .NET 4.0より古いものを使用すると、メモリマッピングが困難になる場合があります

  1  0


ベストアンサー

1回のシークは、平均5400rpmドライブで約15msです。 残りは比較して非常に小さいです。

1


250,000個のファイルを開くと(そういう意味なら)、数ミリ秒以上かかります。 ディレクトリのサイズは、ファイルシステムスタック全体を250,000回通過するという事実ほど面白くありません(NTFS、カーネル、おばあさんのお気に入りのアンチウイルスフィルターはすべて再生する必要があります)。

また、いずれの場合も最終アクセス時間は確固たるものではありません。

1


タイトルとURLをコピーしました