如何在Windows 7的缓存中保留文件?


6

有时你比Windows知道什么文件将在以后重复使用。 假设您有8GB内存,并且在I / O绑定应用程序中每小时使用相同的1GB文件(如果文件被缓存需要1秒钟完成,如果没有则需要1分钟。)现在您处理其他一些16GB内存不会重复使用的数据。当然,经常使用的1GB文件将被推出缓存。如果可以告诉Windows将1GB文件保留在内存中将是有益的。 (更好的是,如果可以告诉Windows不要缓存那些16GB的数据,那将是很好的,但我不乐观这可以做到。)

网络共享中的文件情况更糟:即使有空闲内存,Windows也会从缓存中删除文件。如果你立即重新使用一个文件,它仍然会在缓存中;但是如果你关闭文件并等待30秒,缓存就会消失,系统将需要从远程服务器重新获取文件。对我来说,这是非常明显的,因为我使用的是3 Mbps网络链接,我使用大小约为10 MB的文件。

穷人将文件保存在缓存中的方法是继续读取文件。有没有更好的方法? 你知道有这样做的程序吗?

(如果这可以在Linux下轻松完成,请告诉我。)

Answers:


3

想到两件事。

  1. 将文件复制到 内存磁盘 在第一次使用之前,当你完成它之后将它移回文件。 ( QSoft的RamDisk 建议花12美元 这里
  2. 买快 SSD驱动器 并看看是否有帮助(足够)

因此,没有办法告诉Windows将某些文件保留在其磁盘缓存中,例如。 .Net框架?
OverTheRainbow

OverTheRainbow:不,没有。这些程序如何访问这些文件? MapViewOfFile,还是传统的ReadFile / WriteFile(呃)?
Jamie Hanrahan

0

对于某些类型,例如dll,这是可能的:

Windows缓存一组常用的dll,这些是'已知的DLL'。为了保持缓存的dll文件,它只需要成为该集合的一部分。


OP不询问已知的DLL
pun

1
实际上,OP并不具体说明他所谈论的文件类型,尽管对“数据”,网络共享和Linux的引用似乎排除了他询问DLL的可能性。 (现在我要做一个关于1GB DLL文件的噩梦。)
Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.