Когда я ищу совпадения с grep
, я часто замечаю, что последующий поиск занимает значительно меньше времени, чем первый - например, 25 с против 2 с. Очевидно, дело не в том, чтобы повторно использовать структуры данных с момента последнего запуска - они должны были быть освобождены. Запустив time
команду grep
, я заметил интересное явление:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
Куда уходит все остальное время? Есть ли что-нибудь, что я могу сделать, чтобы он работал быстро каждый раз? (например, другой процесс читает файлы, прежде чем grep
искать их.)
источник
TL;DR
ответ: «[блок ожидает] ввода / вывода».cat
+grep
это все равно займет больше времени, чем вgrep
одиночку.cat
в качестве дешевой предварительной выборки, пока вы делаете что-то еще, в рамках подготовки кgrep
интересам.cat
сtac
тем же эффектом и более высоким использованием оперативной памяти: D Или все кошки с TACВ среде сетевого хранения также могут быть относительно значительные задержки при первом доступе к файлу, который находится на «файлере», отдельном от сервера. Как только этот файл будет доступен на сервере, он будет кэширован локально, и последующий доступ к данным будет намного быстрее.
Вот эксперимент, вычисляющий контрольную сумму данных файла, а не grep. Первый вызов медленный, а последующие быстрые.
источник