grep использует кэш для ускорения поисков?

O'Reilly sed и книга awk являются великими для er sed и awk.

36
09.03.2011, 12:09
3 ответа

Не grep как таковой, но сама файловая система часто кэши недавно считывают данные, заставляя более поздние выполнения пойти быстрее, так как grep эффективно ищет в памяти вместо диска.

60
27.01.2020, 19:36
  • 1
    , я соглашаюсь. В первый раз Вы grep файл, код файловой системы загружает файл из диска в кэш; когда Вы grep это снова вскоре после этого, это не имело времени для истечения от кэша все же. Посмотрите, существует ли способ вручную сбросить кэш файловой системы, затем выдержать сравнение прежде и после времен. –  Shadur 09.03.2011, 12:56
  • 2
    @Shadur — существует путь. См. unix.stackexchange.com/questions/8398 / … –  mattdm 09.03.2011, 18:07
  • 3
    Нет никакого практического различия, но это - кэш ядра, не файловая система. спасибо –  pboin 09.03.2011, 20:40
  • 4
    @pboin хорошо, я взял маленький ярлык. Конечно, это - часть ядра, которое обрабатывает файловую систему, которая делает кэширование не файловая система (на диске) сам по себе. Педантичный, но верный. :) –  PaulRein 10.03.2011, 16:49

Linux и *ОТКЛОНЯЕТ системы, используют различные кэши, которые находятся между файловыми системами (абстрагированный через VFS) и процессы уровня пользователя. Таким образом, это не grep, и это не файловая система, делающая кэширование - это - операционная система.

Кэш, который ответственен за Вашу grep производительность, является Кэш-буфером VFS. Другие кэши для inodes и каталогов, но они не играли бы роли здесь.

Поскольку больше информации видит: Проект Документации Linux: 9.2 Виртуальная файловая система http://tldp.org/LDP/tlk/fs/filesystem.html

19
27.01.2020, 19:36
  • 1
    При выполнении рекурсивного grep inode и dentry кэши имеют заметное значение. В тесте, grep в /usr/include занял ~16.4 секунд в моей системе со всеми отброшенными кэшами. Со всем кэшируемым, приблизительно 0,3 секунды. Если я отбрасываю просто кэш страницы (который содержит кэш-буфер), требуется ~14.3 секунд. Если я оставляю кэш страницы и отбрасываю dentry/inode кэши, это - приблизительно 12 секунд. –  mattdm 09.03.2011, 18:07
  • 2
    @mattdm, это интересно. Как Вы отбрасывали кэши? –  JRW 09.03.2011, 18:35
  • 3
    unix.stackexchange.com/questions/8398 / … :) –  mattdm 09.03.2011, 19:09
[114810] И если вы [115171] ищете кэшированную версию grep, посмотрите [115173] https://stackoverflow.com/questions/7734596/grep-but-indexable[12115]
1
27.01.2020, 19:36

Теги

Похожие вопросы