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 time
comando 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 grep
buscarlos).
fuente
TL;DR
respuesta es "[bloque esperando] E / S".cat
+grep
todavía va a tomar más tiempo quegrep
solo.cat
como una búsqueda previa barata mientras está haciendo otra cosa, en preparación para elgrep
interés.cat
stac
por 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