【发布时间】:2016-07-25 13:29:18
【问题描述】:
我创建了一个程序来测量对文件执行 read() 所花费的时间,我这样做了几次以确定我的文件系统的块大小。
我的问题: 绘制完这些数据后,每次尝试时,无论我在每次迭代中读取的大小如何,与任何其他读取相比,第一次读取都需要更长的时间。我知道一旦一个块完成读取,在新块中进行下一次读取的时间将花费更多时间(我在我的情节中观察到),但第一次读取值也远高于此值。
有人有文件系统/操作系统吗?为什么会这样?
【问题讨论】:
-
您的文件有多大?如果它们只有几 KB,它们可能仍被缓存在某个地方(级别缓存等)。
-
@Leandros 如果有足够的未使用内存可用,甚至千兆字节的文件也可以保存在页面缓存中。
-
@Leandros 我的文件是 3 MB。
-
@JohnDoe 将文件设为几 GB,正如 EOF 所说,您的操作系统可能会缓存最近使用的文件/区域。
标签: c operating-system filesystems