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

Comparing time taken to read() from file system

我创建了一个程序来测量对文件执行 read() 所花费的时间,并且我多次执行此操作以确定我的文件系统的块大小。

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

有没有人有 filesystems/O.S.基于答案为什么会这样?

我能想到几个可能会出现这种情况的原因。 文件系统可能会缓存(预取)从磁盘读取的数据,因此即使它只 returns (比如说)你的程序的 1 个块,它实际上可能已经从磁盘读取了多个块;这样下次您进行读取时,您实际上只是从缓存数据中提取更多内容。也有可能进行第一次读取可能涉及读取头必须移动到文件的开头?这可能非常依赖于文件系统。我认为缓存更有可能是原因?