fopen读写文件之速度疑惑
如题。
小弟在Linux下写了一个测试读写文件速度的程序。先写文件,然后再读取。
写文件是用fwrite函数,读文件用fread函数,时间的截取用gettimeofday函数。
取时间方式是:先打开文件,然后取开始时间,写/读,然后关掉文件,再取结束时间,算得写/读文件所需时间。
写完文件后,用sync(),刷一下缓冲,然后再close掉。
读的时候就直接fopen,然后fread。
现在的问题是:
1.读/写 小文件速度较慢,大文件速度比较快
2.写的速度比较慢(相对来说比较正常,用U盘来测,3.X M/S),读的速度非常快800~900多M/S,怀疑是读的时候,直接从缓冲区中读出了。其中一个现象是写文件在本地磁盘,写的速度是三十几兆/S,读的速度是870多兆/S;写文件在U盘上,写的速度是3.x/S,读的速度是接近900兆/S。
写的时候用和不用sync()差别很大(10倍左右),说明用了之后是把缓冲区中的数据写到磁盘上去了。
读的时候是否也有相应的函数把之前打开的缓冲区清掉呢,真正的是从磁盘上读进来?