Percebi que execuções subsequentes grep
na mesma consulta (e também em uma consulta diferente, mas no mesmo arquivo) são muito mais rápidas 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 cache das estruturas usadas para pesquisa, mas não consegui encontrar uma referência na Internet.
Qual mecanismo permite grep
retornar resultados mais rapidamente nas pesquisas subseqüentes?
Os sistemas Linux e * NIX utilizam 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. Portanto, não é grep e não é o sistema de arquivos que faz o cache - é o sistema operacional.
O cache responsável pelo seu desempenho grep é o cache de buffer do VFS. Outros caches são para inodes e diretórios, mas eles não entrariam em jogo aqui.
Para obter mais informações, consulte: Projeto de documentação do Linux: 9.2 O sistema de arquivos virtual http://tldp.org/LDP/tlk/fs/filesystem.html
fonte
/usr/include
levou ~ 16,4 segundos no meu sistema com todos os caches descartados. Com tudo em cache, cerca de 0,3 segundos. Se eu soltar apenas o cache da página (que contém o cache do buffer), leva ~ 14,3 segundos. Se eu deixar o cache da página e soltar os caches de dentry / inode, são cerca de 12 segundos.E se você estiver procurando por uma versão em cache do grep, consulte https://stackoverflow.com/questions/7734596/grep-but-indexable
fonte