读取文件时间差异大, 原因不得而知?
我用的内核: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;
}
#################################
我理解是cpu将数据放到了cash,下次读取的时候,先看缓冲区有没有,有就从缓冲区读,没有才从硬盘读 试着重启电脑,然后在读,估计时间会长一点
当然这都是猜测,可以验证下 回复 2# tg1681
好像就这么理解. 重启电脑肯定变慢. 内核有read缓存.
页:
[1]