我可以使用哪些工具或技术来删除缓存的文件内容,以防止我的性能结果出现偏差?我相信我需要完全清除或有选择地删除有关文件和目录内容的缓存信息.
我正在开发的应用程序是一个专门的压缩实用程序,并且预计会做很多工作来读取和编写操作系统最近没有触及的文件,并且其磁盘块不太可能被缓存.
当我重复分析执行文件处理工作的不同策略的任务时,我希望消除IO时间中看到的可变性.
我主要对Windows XP的解决方案感兴趣,因为那是我的主要开发机器,但我也可以使用linux进行测试,所以我也对这个环境的答案感兴趣.
我尝试了SysInternals CacheSet,但是在重新读取我刚读过几次的文件时,单击"清除"不会导致可测量的增加(在冷启动后恢复到计时).
使用SysInternal的RAMMap应用程序.
Empty/Empty Standby List菜单选项将清除Windows文件缓存.
对于Windows XP,您应该能够通过使用带有FILE_FLAG_NO_BUFFERING选项的CreateFile打开文件然后关闭句柄来清除特定文件的缓存.这没有记录,我不知道它是否适用于更高版本的Windows,但我很久以前在编写测试代码来比较文件压缩库时使用了它.我不记得读或写访问是否影响了这个技巧.
快速的Google搜索为Linux提供了这些选项
卸载并装入包含文件的分区
sync && echo 1 > /proc/sys/vm/drop_caches
命令行实用程序可以在这里找到
从来源:
EmptyStandbyList.exe
是Windows(Vista及更高版本)的命令行工具,可以清空:
处理工作集,
修改后的页面列表,
备用列表(优先级0到7),或
仅优先级为0的备用列表。
用法:
EmptyStandbyList.exe workingsets|modifiedpagelist|standbylist|priority0standbylist