LRU文件caching和在Windows目录中查找文件的成本

我有一个应用程序,将下载和caching,至less250,000 8KB *文件总计约2GB。 更新这个caching时,我需要删除最近最less使用的文件。 *这些小文件跨越两个4KB扇区。

在NTFS格式的5400 RPM驱动器的目录中,为这种types的文件获取文件句柄的相对成本是多less? 如果我将所有的200K文件存储在一个目录中,只会得到一个文件句柄需要几个毫秒? 我可以很容易地把文件分成不同的目录。

Windows 7默认禁用上次访问文件的时间,我不想要求pipe理员启用此function。 我应该在内存中维护一个单独的文件访问时间列表(在应用程序退出时序列化到磁盘)?

我应该考虑将这些文件存储在一个大的平面文件? 如果我使用.NET 4.0以上的版本,内存映射可能会很困难

打开250,000个文件 – 如果这是你的意思 – 将需要超过几毫秒,是的。 目录的大小比通过整个文件系统堆栈250000次(NTFS,内核以及祖母最喜欢的防病毒过滤器都必须有机会玩的东西)的事实要少得多。

最后的访问时间在任何情况下都不稳定。

平均5400rpm的驱动器一次寻找约15ms。 其余的比较微不足道。