Não é o grep, mas o próprio sistema de arquivos armazena os dados recentemente lidos, fazendo com que as execuções posteriores sejam mais rápidas, já que o grep está efetivamente procurando na memória, em vez de no disco.
Tenho notado que execuções subsequentes de grep
na mesma consulta (e também uma consulta diferente, mas em o mesmo arquivo) são muito mais rápidos do que a primeira execução (o efeito é facilmente perceptível ao pesquisar em um arquivo grande).
Isso sugere que o grep usa algum tipo de armazenamento em cache das estruturas usadas para pesquisa, mas não consegui encontrar uma referência na Internet.
Qual mecanismo permite que grep
retorne resultados mais rapidamente em pesquisas subseqüentes?
Os sistemas Linux e * NIX fazem uso de vários caches que ficam entre os sistemas de arquivos (abstraídos através do VFS) e os processos no nível do usuário. Então não é grep e não é o sistema de arquivos que faz o cache - é o sistema operacional.
O cache responsável por seu desempenho no grep é o Cache de Buffer VFS. Outros caches são para inodes e diretórios, mas esses não entram em jogo aqui.
Para mais informações, consulte: Projeto de documentação do Linux: 9.2 O link
do Virtual File SystemE se você estiver procurando por uma versão em cache do grep, confira link