Я заметил, что последующие прогоны одного и grep
того же запроса (а также другого запроса, но в том же файле) выполняются намного быстрее, чем первый прогон (эффект легко заметен при поиске в большом файле).
Это говорит о том, что grep использует какое-то кэширование структур, используемых для поиска, но я не смог найти ссылку в Интернете.
Какой механизм позволяет grep
быстрее возвращать результаты при последующих поисках?
Системы Linux и * NIX используют различные кэши, которые находятся между файловыми системами (абстрагированными через VFS) и процессами пользовательского уровня. Так что это не grep и не файловая система, выполняющая кеширование - это операционная система.
Кеш, который отвечает за вашу производительность grep, является VFS Buffer Cache. Другие кеши предназначены для инодов и каталогов, но они не будут здесь использоваться.
Для получения дополнительной информации см .: Проект документации Linux: 9.2 Виртуальная файловая система http://tldp.org/LDP/tlk/fs/filesystem.html
источник
/usr/include
моей системе занял ~ 16,4 секунды, все кэши были сброшены. Со всем кешируется около 0,3 секунды. Если я отбрасываю только кеш страницы (который содержит кеш буфера), это займет ~ 14,3 секунды. Если я покидаю кеш страниц и удаляю кеш дентри / инода, это занимает около 12 секунд.А если будут ищешь кэшированную версию Grep, проверить https://stackoverflow.com/questions/7734596/grep-but-indexable
источник