关于windows下读写文件的问题

fall_x 华南理工大学 软件工程  2019-08-31 12:06:34
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
...全文
19 点赞 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2019-08-31
不要低估Windows读写磁盘时充分利用磁盘Cache,内存Cache,……,各种Cache提高效率所用算法的智商。
回复
相关推荐
发帖
其它技术问题
创建于2007-09-28

3843

社区成员

C/C++ 其它技术问题
申请成为版主
帖子事件
创建了帖子
2019-08-31 12:06
社区公告
暂无公告