微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何强制Windows清除所有磁盘读取caching数据?

可能重复:

如何使文件系统caching失效?

我正在写一个磁盘密集的win32程序。 第一次运行时,运行速度比使用FindFirstFile()/ FindNextFile()扫描用户文件夹要慢很多。

如何在不重新启动的情况下重复第一次演奏? 有没有办法强制系统丢弃磁盘caching中的所有内容

我知道,如果我正在读取单个文件,则可以通过将FILE_FLAG_NO_BUFFERING标志传递给CreateFile()的调用来禁用caching。 但是在search文件时这样做似乎不可能。

Windows:启动一个隐藏的新进程(无窗口)

尽pipe我有规则反对,但我在一个专栏中有重复的结果。 我怎样才能消除这种重复发生?

bash在cygwin add_item(“ ?? C: cygwin”,“/”,…)上崩溃

以编程方式更改显示器的温度

无业游民无法胜利10

Windows上的OpenAI Gym Atari

使文件可写入,以添加新的软件包

Windows API函数声明中的“CALLBACK”是什么意思?

IIS 6突然需要在网站上进行身份validation

使用VI命令的Windows最佳Ruby编辑器

你有没有想过在不同的卷上做这个,然后卸下/重新安装卷? 这将导致绝大多数的一切都从磁盘重新读取(虽然缓存在那里不会在乎)。

您需要创建足够的内存压力,以使内存管理器和缓存管理器放弃之前的缓存结果。 对于高速缓存管理器,可以尝试打开启用了高速缓存的大型文件(即大于物理内存)文件,然后向后读取(以避免任何连续的I / O优化)。 虚拟机和缓存管理器之间的交互更复杂一些,更依赖于操作系统版本。

控制器上也有高速缓存(可能,但不太可能)和磁盘驱动器本身(可能)。 有特定的IoCtls刷新此缓存,但以我的经验,磁盘固件未经测试在这个舞台上。

通过SysInternals检查CacheSet的清除功能

您可以通过使用虚拟机避免物理重启。

我尝试了答案中的所有方法包括CacheSet,但它们不适用于FindFirstFile / FindNextfile()。 这是什么工作:

通过网络扫描文件。 扫描共享驱动器时,似乎Windows不会缓存文件夹,所以每次都很慢。

使任何算法变慢的最简单方法是将调用插入到Sleep()中。 这可以揭示多线程代码中的很多问题,这正是我真正想要做的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐