He notado que las ejecuciones posteriores de grep
la misma consulta (y también una consulta diferente, pero en el mismo archivo) son mucho más rápidas que la primera ejecución (el efecto se nota fácilmente al buscar en un archivo grande).
Esto sugiere que grep utiliza algún tipo de almacenamiento en caché de las estructuras utilizadas para la búsqueda, pero no pude encontrar una referencia en Internet.
¿Qué mecanismo permite grep
devolver resultados más rápido en búsquedas posteriores?
Los sistemas Linux y * NIX hacen uso de varios cachés que se encuentran entre los sistemas de archivos (abstraídos a través de VFS) y los procesos a nivel de usuario. Entonces no es grep y no es el sistema de archivos el que hace el almacenamiento en caché, es el sistema operativo.
El caché que es responsable de su rendimiento grep es el caché de búfer VFS. Otros cachés son para inodes y directorios, pero esos no entrarían en juego aquí.
Para obtener más información, consulte: Proyecto de documentación de Linux: 9.2 El sistema de archivos virtual http://tldp.org/LDP/tlk/fs/filesystem.html
fuente
/usr/include
tomó ~ 16.4 segundos en mi sistema con todas las memorias caché caídas. Con todo en caché, unos 0,3 segundos. Si elimino solo la memoria caché de la página (que contiene la memoria caché del búfer), tarda ~ 14.3 segundos. Si dejo la memoria caché de la página y dejo caer las memorias caché dentry / inode, son unos 12 segundos.Y si está buscando una versión en caché de grep, consulte https://stackoverflow.com/questions/7734596/grep-but-indexable
fuente