Lors de la recherche de correspondances avec grep
, je remarque souvent que la recherche suivante prend beaucoup moins de temps que la première, par exemple 25 s contre 2 s. Évidemment, ce n'est pas en réutilisant les structures de données de sa dernière exécution - celles-ci auraient dû être désallouées. Exécuter une time
commande surgrep
, j'ai remarqué un phénomène intéressant:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
Où va le reste du temps? Y a-t-il quelque chose que je puisse faire pour le faire fonctionner à chaque fois rapidement? (par exemple, demander à un autre processus de lire les fichiers avant de les grep
rechercher.)
la source
TL;DR
réponse est "[bloc en attente] d'E / S".cat
+grep
va encore prendre plus de temps quegrep
seul.cat
comme une prélecture bon marché pendant que vous faites autre chose, en préparation pour l'grep
intérêt.cat
s avectac
pour le même effet et une plus grande utilisation de la RAM: D Ou tous les chats avec tacDans un environnement de stockage en réseau, il peut également y avoir des retards relativement importants lorsque vous accédez pour la première fois à un fichier qui réside sur un "filer" distinct du serveur. Une fois que ce fichier a été accédé sur le serveur, il sera mis en cache localement et l'accès ultérieur aux données sera beaucoup plus rapide.
Voici une expérience calculant simplement une somme de contrôle des données de fichier - pas grep. La première invocation est lente et les suivantes sont rapides.
la source