J'ai écrit un outil un peu similaire, en python aussi. Ça fait du 25kl/s. Donc du même ordre de magnitude. GoAccess affiche 100kl/s ... sur un i7.
Je gagne un peu de temps en déplaçant le parsing du log dans un script awk pour produire un format unique en TSV qui est d'ailleurs le facteur limitant dans le pipeline.
Le parsing de date est particulièrement et surprenamment coûteux en Python (et dans d'autre langage d'ailleurs) ; c'est souvent bénéfique de se passer de la lib standard et de faire le parsing soi-même.
Quant aux structures de données, yahi utilise archery, j'utilise defaultdict ; je suppose que cela ne fait pas grande différence.
De toutes façons 1/ il faut profiler pour savoir 2/ il ne faut pas attendre des performances de folie en Python.
[^] # Re: performances ?
Posté par steph1978 . En réponse à la dépêche yahi un agrégateur de statistiques dans l'esprit d'awstats. Évalué à 2.
J'ai écrit un outil un peu similaire, en python aussi. Ça fait du 25kl/s. Donc du même ordre de magnitude. GoAccess affiche 100kl/s ... sur un i7.
Je gagne un peu de temps en déplaçant le parsing du log dans un script
awkpour produire un format unique en TSV qui est d'ailleurs le facteur limitant dans le pipeline.Le parsing de date est particulièrement et surprenamment coûteux en Python (et dans d'autre langage d'ailleurs) ; c'est souvent bénéfique de se passer de la lib standard et de faire le parsing soi-même.
Quant aux structures de données,
yahiutilise archery, j'utilise defaultdict ; je suppose que cela ne fait pas grande différence.De toutes façons 1/ il faut profiler pour savoir 2/ il ne faut pas attendre des performances de folie en Python.