You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下如何确保基准测试前文件未被缓存?

针对Windows 10冷缓存文件读取基准测试的优化方案

无需重启的缓存清理方法

1. 内存压力法(最简便)

利用Windows的缓存置换机制,创建一个比物理内存略大的临时文件,把现有缓存挤出去:

# 创建65GB的临时文件(略大于你的64GB内存)
fsutil file createnew C:\temp\cachefiller.dat 68719476736
# 删除临时文件,释放磁盘空间
del C:\temp\cachefiller.dat

执行完这两步后,系统会把之前缓存的测试文件内容全部置换到磁盘,实现冷缓存效果。

2. 精准清理单个文件缓存

使用Sysinternals的CacheSet工具,它可以针对性清除指定文件的缓存:

  • 运行工具后选择Purge功能,或者通过命令行指定测试文件路径,就能只清理目标文件的缓存,不会影响系统其他缓存。

3. 程序化集成清理(适合自动化测试)

如果要在基准测试代码里直接处理缓存,可以调用Windows API:

  • 先关闭测试文件的句柄,然后调用EmptyWorkingSet(GetCurrentProcess())释放当前进程的工作集缓存;
  • 更彻底的方式是使用NtSetSystemInformationAPI调整系统缓存大小,不过需要管理员权限。

验证缓存状态

打开资源监视器→切换到「磁盘」标签→在「关联的文件」里找到你的测试文件,查看「缓存的字节」列,数值接近0就说明缓存已清除。

关于你现有重启方案的说明

重启确实能清空缓存,而且你的测试文件不是可执行/DLL,不会被Superfetch预加载,符合冷缓存场景,但频繁重启太耗时,完全没必要。

关键注意事项

  • 别用FILE_FLAG_NO_BUFFERING,它会绕过所有缓存(包括驱动预读),不符合你要模拟的真实冷缓存场景;
  • 测试前关闭其他磁盘读写密集的程序,避免干扰缓存状态;
  • 你关注的是接口开销而非绝对速度,所以HDD/SSD的差异不影响测试结论。

内容的提问来源于stack exchange,提问作者Adrian McCarthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:45:28