关于windows下读写文件的问题
windows环境。我分别使用C的fopen,c++的fstream(以及针对读和写的ofstream,ifstream),分别写入了一个1000MB的文件。fstream写入代码如下:
=====================
char wrbuf[1024*1024]
fstream fs;
fs.open("file",ios::out|ios::binary);
for(int t=1;t<=1000;t++)
fs.write(wrbuf,1024*1024);
fs.close();
=====================
c风格的FILE*同理,用fwrite一次写入1MB,1000次
读写过程中发现,第一秒磁盘写入了400MB的内容,但是接下来的一秒只写入了100MB,接下来速度稳定在20-60MB/S,也就是磁盘连续读写时的正常速度(使用各大磁盘读写测评软件测出的)
读的时候,用的是fstream.read(rdbuf,1024*1024)1000次,但1000MB的文件居然1.2s就读完了(1000次fread在1.2s内执行完毕,而且从rdbuf中读到的内容确实是写入的内容)!
问题就是,为什么一开始写文件时速度会这么快?磁盘缓冲区的原因?读的时候为什么1.2s就能读完?这是假的吗?这个现象与c++的io库实现有关系吗?
希望知道的大神为小生解答,非常感谢。
ps. 十几年前的机械硬盘,用各种磁盘测试软件测得连续读写速度都是60-70MB/S