可能重复:
如何使文件系统缓存无效?
我正在编写磁盘密集型win32程序.它第一次运行时,使用FindFirstFile()/ FindNextFile()扫描用户的文件夹时运行速度慢很多.
如何在不重新启动的情况下重复此第一次性能?有没有办法强制系统丢弃其磁盘缓存中的所有内容?
我知道如果我正在读取单个文件,我可以通过将FILE_FLAG_NO_BUFFERING标志传递给CreateFile()调用来禁用缓存.但是在搜索文件时似乎不可能这样做.
我尝试了答案中的所有方法,包括 CacheSet,但它们不适用于 FindFirstFile/FindNextfile()。这是有效的:
通过网络扫描文件。扫描共享驱动器时,Windows似乎没有缓存文件夹,因此每次都很慢。
使任何算法变慢的最简单方法是插入对 Sleep() 的调用。这可以揭示多线程代码中的许多问题,而这正是我真正想要做的。