怎么清楚c IO库的缓存

lumianph 2009-06-03 02:21:46
因为我需要对IO 测试读写的速度,但是发现运行过一遍程序以后,即使我重新再编译生成一遍,读的速度还是会比第一次运行快好多,可能是系统缓存了需要读的内容,这给我实验带来很大的不方便,请问如何清空这些io的缓存?我用的是标准C的IO读写:fread, fwrite
谢谢~!
...全文
118 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2009-06-06
  • 打赏
  • 举报
回复
现代的文件系统,在轻负载的情况下,由于缓冲的使用,效率非常高。
要知道,磁盘操作是很慢的,只有长时间高负载的文件读写,才能测出真实的磁盘IO速度的。
lumianph 2009-06-06
  • 打赏
  • 举报
回复
对的,我觉得可能也是文件系统或者操作系统的问题,还是没看到理想的方法,不过谢谢各位,没方法了的话我尽快结贴
sh365 2009-06-06
  • 打赏
  • 举报
回复
一个比较笨的方法,我觉得是否可以用其它的脏数据把可能影响预读到的数据覆盖掉呢?
mymtom 2009-06-06
  • 打赏
  • 举报
回复
长时间读取大量文件应该可以测试出来比如读取/usr目录下的所有文件。
mymtom 2009-06-06
  • 打赏
  • 举报
回复
这个不是IO库的问题,是文件系统的缓存。
lumianph 2009-06-06
  • 打赏
  • 举报
回复
还有人有建议不
lumianph 2009-06-03
  • 打赏
  • 举报
回复
你说的是prefetch吧,但我觉得这个应该是和buffer有关而不是prefetch。我不希望改变文件读写顺序……不过我可以试试看,谢谢
lumianph 2009-06-03
  • 打赏
  • 举报
回复
汗……这个办法我也知道
  • 打赏
  • 举报
回复
读文件?
这是不同于write的IO缓冲,这种情况较预读技术。
就是你顺序读一段文件内容,同时系统会试图先读取更多的内容。
close文件,重新open。这样只能保证不是预读的内容,但是前几次读,还是会发生预读,导致测试结果比实际的慢。

试下不按顺序读取看看。
lingyin55 2009-06-03
  • 打赏
  • 举报
回复
每次写入的内容能不能不要相同?
lylm 2009-06-03
  • 打赏
  • 举报
回复
顶楼上
yyyapple 2009-06-03
  • 打赏
  • 举报
回复
重新启动机器 :)
breezes2008 2009-06-03
  • 打赏
  • 举报
回复
fflush(fp) //fp为文件指针

只能刷新输出流
lumianph 2009-06-03
  • 打赏
  • 举报
回复
不行,试过了,我是要测试读的速度
majun01 2009-06-03
  • 打赏
  • 举报
回复
用fflush()试试。

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧