当前位置:  开发笔记 > 编程语言 > 正文

清除文件缓存以重复性能测试

如何解决《清除文件缓存以重复性能测试》经验,为你挑选了4个好方法。

我可以使用哪些工具或技术来删除缓存的文件内容,以防止我的性能结果出现偏差?我相信我需要完全清除或有选择地删除有关文件和目录内容的缓存信息.

我正在开发的应用程序是一个专门的压缩实用程序,并且预计会做很多工作来读取和编写操作系统最近没有触及的文件,并且其磁盘块不太可能被缓存.

当我重复分析执行文件处理工作的不同策略的任务时,我希望消除IO时间中看到的可变性.

我主要对Windows XP的解决方案感兴趣,因为那是我的主要开发机器,但我也可以使用linux进行测试,所以我也对这个环境的答案感兴趣.

我尝试了SysInternals CacheSet,但是在重新读取我刚读过几次的文件时,单击"清除"不会导致可测量的增加(在冷启动后恢复到计时).



1> 小智..:

使用SysInternal的RAMMap应用程序.

rammap空待机

Empty/Empty Standby List菜单选项将清除Windows文件缓存.


对于程序化方法,请参阅此SO帖子:http://stackoverflow.com/a/23085045/430360
RAMMap不能在Windows XP上运行.这些菜单选项是否与SysInternals Cacheset应用程序中的"清除"按钮有所不同?
单击空待机列表后,按F5刷新文件列表

2> 小智..:

对于Windows XP,您应该能够通过使用带有FILE_FLAG_NO_BUFFERING选项的CreateFile打开文件然后关闭句柄来清除特定文件的缓存.这没有记录,我不知道它是否适用于更高版本的Windows,但我很久以前在编写测试代码来比较文件压缩库时使用了它.我不记得读或写访问是否影响了这个技巧.


所以必须重复*每个文件*?因此,例如,如果您复制一个包含100MB分布在10个子目录中的30个文件的目录,则必须分别打开每个目录以确保您读取实际磁盘而不是缓存?

3> John Nilsson..:

快速的Google搜索为Linux提供了这些选项

    卸载并装入包含文件的分区

    sync && echo 1 > /proc/sys/vm/drop_caches


谢谢,这看起来非常有用,虽然我可能想要回应3而不是1.我主要对Windows XP感兴趣,这就是为什么我在google搜索中没有找到它.

4> Edwin van Mi..:

命令行实用程序可以在这里找到

从来源:

EmptyStandbyList.exe 是Windows(Vista及更高版本)的命令行工具,可以清空:

处理工作集,

修改后的页面列表,

备用列表(优先级0到7),或

仅优先级为0的备用列表。

用法:

EmptyStandbyList.exe workingsets|modifiedpagelist|standbylist|priority0standbylist

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有