我可以使用什么工具或技术来删除缓存的文件内容,以防止我的性能结果被扭曲?我认为我需要完全清除或选择性地删除有关文件和目录内容的缓存信息。
我正在开发的应用程序是一个专门的压缩实用程序,预计会做大量的工作来读取和写入文件,这些文件是操作系统最近没有接触过的,并且其磁盘块不太可能被缓存。
当我重复分析执行文件处理工作的不同策略的任务时,我希望消除IO时间中的可变性。
我主要对Windows XP的解决方案感兴趣,因为它是我的主要开发机器,但我也可以使用linux进行测试,因此我也对该环境的答案感兴趣。
我尝试过SysInternals CacheSet,但是点击"Clear“并不会导致重新读取我刚读过几次的文件的时间明显增加(冷启动后恢复到定时)。
发布于 2012-03-11 03:22:01
发布于 2011-08-19 03:40:11
对于Windows XP,您应该能够通过使用带有FILE_FLAG_NO_BUFFERING选项的CreateFile打开文件,然后关闭句柄来清除特定文件的缓存。这并没有文档记录,我不知道它是否可以在更高版本的Windows上运行,但我很久以前在编写测试代码来比较文件压缩库时就用过了。我不记得是读访问还是写访问影响了这个技巧。
发布于 2012-11-07 11:12:08
#include <fcntl.h>
int posix_fadvise(int fd, off_t offset, off_t len, int advice);
带有建议选项POSIX_FADV_DONTNEED
The specified data will not be accessed in the near future.
https://stackoverflow.com/questions/478340
复制相似问题