sunworld 发表于 2015-05-20 11:22

读取文件时间差异大, 原因不得而知?


我用的内核:2.6.18-274.12.1.el5,x86_64 x86_64 x86_64 GNU/Linux, 多CPU, 大内存.

特定程序teDing() 第一次读取文件花费1000秒.

可是如果在执行上面teDing()之前, 我先执行下面程序(对每个要读的文件都预先这么处理), 这时, 所有预处理时间+teDing()(当然是第一次读)的时间也最多不过200秒. 比没有预读处理的要少很多. 我多次这么实验. 得到的都是这样的现象.

什么原因?

谢谢高人赐教.



###############预读程序##################
#include <fcntl.h>

#define READSIZE 1024*1024*1024
char rbuf;

int main(int ac, char* av[]){
    int rfd=-1,rlen=-1,ret=-1;      

    if(ac == 2){
      if((rfd= open(av,O_RDONLY))== -1)   
            return -1;
      while((rlen = read(rfd,rbuf,READSIZE)) > 0){;}
      ret = close(rfd);
    }
    return ret;
}
#################################


tg1681 发表于 2015-05-25 13:07

我理解是cpu将数据放到了cash,下次读取的时候,先看缓冲区有没有,有就从缓冲区读,没有才从硬盘读

tg1681 发表于 2015-05-25 13:08

试着重启电脑,然后在读,估计时间会长一点
当然这都是猜测,可以验证下

sunworld 发表于 2015-05-25 17:44

回复 2# tg1681

好像就这么理解. 重启电脑肯定变慢. 内核有read缓存.


   
页: [1]
查看完整版本: 读取文件时间差异大, 原因不得而知?