(这不是我的计划,但我会尽力提供所有相关资料给我所知)。文件读取第一读取慢,但很快就连续读
有一个程序它读取大小约为300MB的二进制文件,处理它们并输出一些信息。该程序使用ifstream进行文件输入,并且每次读取都正确初始化并关闭流。
程序必须多次读取每个文件。第一次读取文件大约需要3秒,每次连续读取大约需要0.1秒。如果处理了多个文件,返回到第一个文件仍然会产生较快的读取速度,但是在一段时间后重新读取文件变得缓慢。
此外,如果一个文件被复制到另一位置,该新文件的第一读取的速度大致是0.1秒。
如果你做数学题,连续读取速度大约是硬盘驱动器的通告读取速度。
这一切看起来像文件位置由两种操作系统或硬盘的缓存,这样在连续读取你不必去寻找文件的位置。
有谁知道到底是什么原因造成初始读取速度下降,并且是否可以预防?三秒可能看起来不是很多,但它们会使正确处理每个文件所需的总时间增加大约5个小时。
此外,该程序运行在Fedora 14和Scientific Linux上,两个操作系统都有其默认文件系统。
任何想法,将不胜感激。
读取300MB文件的3秒钟大概是正确点击磁盘 - 这是100MB/s,这是速度的高端,您可以从现代快速硬盘。读取300MB文件的0.1秒不会从磁盘上脱落 - 这是从缓存中提取出来的。 – caf