Почему чтение файла происходит быстрее при повторном чтении? - PullRequest
2 голосов
/ 15 декабря 2010

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

При первом запуске этой функции для файла размером 700 МБ это заняло 19 секунд. Когда я повторил
снова прочитав тот же файл, время, которое потребовалось, упало до 0,5 сек.
Я повторил это со многими файлами, и результаты были похожи.
Что здесь происходит?

Ответы [ 2 ]

13 голосов
/ 15 декабря 2010

Операционная система кэширует файл в памяти при первом чтении, а во второй раз он читается из памяти, а не с жесткого диска. Конечно, память намного быстрее.

4 голосов
/ 15 декабря 2010

Ваша операционная система кэширует файл.

Что? Это означает, что при первом чтении файла ваша программа должна была искать информацию на жестком диске,и жесткие диски не работают.

Теперь, прочитав весь файл в первый раз, Linux на всякий случай сохранил его в памяти и, возможно, потому, что в то время не было ничего важного.Итак, во второй раз, когда вы читали его, вы обращались к копии в памяти, не обращаясь к жесткому диску, что на несколько порядков быстрее.

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...