关于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
...全文
49 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2019-08-31
  • 打赏
  • 举报
回复
不要低估Windows读写磁盘时充分利用磁盘Cache,内存Cache,……,各种Cache提高效率所用算法的智商。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧