比较从文件系统读取()的时间

时间:2016-04-05 14:25:10

标签: c operating-system filesystems

我创建了一个程序来测量对文件执行read()所花费的时间,我这样做了几次以确定文件系统的块大小。

我的问题: 在绘制这些数据之后,每当我尝试它时,无论我在每次迭代中读取的大小,第一次读取与其他任何读取相比都需要更长的时间。我知道一旦一个块完成读取,在新块中进行下一次读取的时间将花费更多的时间(我在我的绘图中观察到的)但是这个第一个读取值也远高于此。

有没有人有文件系统/ O.S。基于答案为什么会这样?

1 个答案:

答案 0 :(得分:2)

我可以想到为什么会出现这种情况的几个原因。 文件系统可能会缓存(预取)从磁盘读取的数据,因此即使它只向程序返回(比方说)1个块,它实际上可能已从磁盘读取多个块;这样,下次进行阅读时,您实际上只是从缓存数据中提取更多内容。也许有可能第一次读取可能涉及读头必须移动到文件的开头?这可能与文件系统有关。我认为缓存更有可能是原因吗?