为什么文件读取再次阅读速度更快?

sim*_*mha 2 python linux file

SIZE = 1<<16
def justread(file):
    with open(file, 'rb') as f:
        while f.read(SIZE):
            pass

我第一次在700MB文件上运行此功能需要19秒.当我再次重复
阅读同一个文件时,它花费的时间减少到0.5秒.
我用很多文件重复了这个,结果很相似.
这里发生了什么?

Sve*_*ach 13

操作系统在第一次读取时将文件缓存在内存中,第二次从内存而不是从硬盘读取.当然内存要快得多.


sle*_*ica 5

您的操作系统正在缓存该文件。

什么?这意味着,第一次读取文件时,程序必须去硬盘中查找信息,而硬盘速度很慢。

现在,在第一次读取整个文件后,Linux 将其保留在内存中以防万一,可能是因为当时没有什么重要的东西可以替代。因此,当您第二次读取它时,您正在访问内存中的副本,而无需访问硬盘驱动器,这要快几个数量级。

干杯!