可能重复:
如何使文件系统caching失效?
为了能够这样做一些基准,我需要清理Windows磁盘读取caching。 我怎样才能做到这一点?
实际上,我想比较一下,如果从磁盘加载大的Unicode文件(UTF-8或UTF-16)速度较快,考虑到在内存中我保持UTF-16。
我知道它应该没有什么重大区别,但为了进行基准testing,我需要确保该文件没有被caching – 我需要看看磁盘上的大小是否比解码文件有更多或更less的影响。
如何从两个或多个IIS应用程序使用Apache Ignite?
Google PageSpeed不更新caching
Google Chrome审核caching
Nginxcaching代理失败,SSL23_GET_SERVER_HELLO:sslv3警报握手失败
我可以在Windows平台上获得每个进程的L2caching未命中数吗?
我怎样才能在Linux上追踪这种抖动的来源?
Chrome拒绝cachingJavascript
Windows Azurecaching错误 – “caching引用不存在。 联系pipe理员或使用cachingpipe理工具来创build一个caching“。
微软的某个人几年前(在Windows XP的时代)帮助我解决了这个问题,并给了我一个满足我需求的解决方案。 我的机器中已经有两个驱动器,我需要测试的东西已经放在D盘上,幸运的是,当我想要刷新缓存时,我不需要在D盘上保留任何文件。 从Windows磁盘管理界面,我可以将我的D:驱动器号改为另一个字母,然后再回来,D驱动器就会像操作系统中有一个冷藏缓存一样执行。
AFAIK,不幸的是不能放弃 Windows下的读取缓存。 几年前,我花了一些时间来研究这个,只发现了如何刷新 写入缓存。
正如我所看到的,你有三种选择,除非别人找到了一些魔法:
如果可能,请以非缓冲模式读取文件I / O。
每次你想进行基准测试的时候,创建一个新的测试数据副本,在创建新副本的时候指定非缓冲模式(这应该使副本超出读缓存,但是我没有测试过)。
分配足够的内存,Windows必须放弃磁盘缓存(呃!)。
编辑:至少在Vista和更高版本上刷新读缓存确实是可能的: 在Windows上禁用或刷新页面缓存 。 不过,它需要调用未记录的NtSetSystem@R_726_4045@ion NT API。 另外,对于单个文件,只需通过指定FILE_FLAG_NO_BUFFERING打开文件并再次关闭句柄即可刷新读取缓存。
我发现的唯一的解决方案是http://chadaustin.me/2009/04/flushing-disk-cache/,但这需要太多的时间,所以我希望我们会找到一个更好的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。