为何再次读取文件更快?

2 投票
2 回答
714 浏览
提问于 2025-04-16 08:34

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

第一次我在一个700MB的文件上运行这个函数,花了19秒。
但当我再次读取同一个文件时,时间一下子降到了0.5秒。
我对很多文件都做了同样的测试,结果都差不多。
这是怎么回事呢?

2 个回答

5

你的操作系统在缓存这个文件。

啥意思? 这就是说,当你第一次读取这个文件时,你的程序需要去硬盘上找信息,而硬盘的速度可慢得很。

但是,在你第一次完整读取这个文件后,Linux把它保存在内存里,以备不时之需,可能当时内存里也没有其他重要的东西。所以,当你第二次读取这个文件时,你其实是在访问内存中的副本,而不是再去硬盘上找,这样速度快得多。

干杯!

13

操作系统在第一次读取文件时,会把这个文件存储在内存里。下次再读取的时候,就直接从内存里拿,而不是从硬盘上取。因为内存的速度要快得多。

撰写回答