Bonjour
Je fais un script Perl qui analyse des fichiers de logs Apache, jusque là rien de très orginal...
Ce script recherche certains motifs dans les lignes du logs. Les motifs à rechercher sont stockés dans un fichier à part sous forme d'expressions régulières.
Le script lit une ligne, puis il regarde si le motif matche la ligne, sinon il passe au motif suivant, si oui il effectue un traitement (le même quel que soit le motif) et passe à la ligne suivante.
Le problème est le suivant : lorsqu'il n'y a qu'un motif à essayer, le script met environ 0.4 seconde à analyser les 72000 lignes du log.
Si je mets 2 motifs différents à rechercher, le script met 3 secondes à s'exécuter pour le même log.
Par contre si j'exécute une première fois le script en ne recherchant que le premier motif puis une deuxième fois en ne recherchant que le deuxième motif, les deux fois le script met environ 0.4 seconde à s'exécuter.
Donc je ne comprends pas pourquoi il est plus rapide de lire 2 fois un gros fichier en recherchant un seul motif plutôt que de le lire une seule fois mais en recherchant 2 motifs...
Une erreur dans mon raisonnement ?
Merci d'avance pour vos réponses
Partager