Cuando busco coincidencias grep, a menudo noto que la búsqueda posterior lleva mucho menos tiempo que la primera, por ejemplo, 25s vs. 2s. Obviamente, no es mediante la reutilización de las estructuras de datos de su última ejecución, deberían haberse desasignado. Al ejecutar un timecomando grep, noté un fenómeno interesante:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
¿A dónde va el resto del tiempo? ¿Hay algo que pueda hacer para que funcione siempre rápido? (por ejemplo, hacer que otro proceso lea los archivos, antes de grepbuscarlos).
fuente

TL;DRrespuesta es "[bloque esperando] E / S".cat+greptodavía va a tomar más tiempo quegrepsolo.catcomo una búsqueda previa barata mientras está haciendo otra cosa, en preparación para elgrepinterés.catstacpor el mismo efecto y mayor uso de RAM: D O todos los gatos con tacEn un entorno de almacenamiento en red, también puede haber retrasos relativamente significativos cuando accede por primera vez a un archivo que reside en un "archivador" separado del servidor. Una vez que se haya accedido a ese archivo en el servidor, se almacenará en caché localmente y el acceso posterior a los datos será mucho más rápido.
Aquí hay un experimento que solo calcula una suma de verificación de los datos del archivo, no grep. La primera invocación es lenta, y las posteriores son rápidas.
fuente