2009-06-16 63 views
1

我试图比较一个Windows程序在磁盘缓存处于最佳状态时的性能(当程序运行所需的所有文件都在内存缓存中时,我只是多次运行它得到这个状态),并且当缓存处于最坏状态时,这是完全空的。操作系统磁盘读取缓存失效

我知道确保缓存完全清空的唯一方法是重新启动计算机,但这并不理想,因为它需要太多时间。有没有办法做到这一点,而无需重新启动?我尝试了同步,但它不会使读缓存无效...

回答

1

在您拨打CreateFile时,请包括FILE_FLAG_NO_BUFFERING标志。有关更多信息,请参阅MSDN上的CreateFile reference page。请特别注意requirements

如果修改代码执行此操作过于费力,请尝试编写一个简单的实用程序来读取大于物理内存的文件。这可能足以从文件系统缓存中清除您关心的文件。

+0

CreateFile这个标志似乎工作正常,但我正在寻找一种方法来完成整个文件夹(和子文件夹)。我真的希望我不应该迭代每个文件,因为我想我需要使无效的文件夹中的几百万个文件。 关于编写一个读取大文件的实用程序,我如何保证它会清空缓存?也许windows管理它的缓存的方式不会缓存所有的大文件,并为更多的文件保留一些空间。或者也许不......实际上我不知道。无论如何,我会试一试,看看结果。 – 2009-06-16 15:48:35