[gull] email

Daniel Cordey dc at mjt.ch
Thu Sep 22 15:34:41 CEST 2005


On Thursday 22 September 2005 14:44, Félix Hauri wrote:

> Le résultat est identique!
>
> En fait, cela correspond à ma manière de résonner, (de gauche à droite),
> j'aurais aussi bien pu terminer par ``.*$'':

La complexite d'une "regexp" a peu d'influence sur les performances. C'est 
plutot le fait d'avoir plusieurs "regexep" a execute qui penalise les 
performances. Par exemple :

sed -e 's/^t//' -e 's/^o//' -e 's/t//' -e 's/^o//'

sera plus lent que 

sed 's/^toto//'

Ca parait evident avec un exemple comme celui-ci mais c'est juste pour 
demontre qu'il vaut parfois la peine de se cracher dans les mains pour 
essayer de generer une seule ER complexe, plutot que plusieurs petites. Sans 
doute N petites ER sont plus faciles a comprendre, mais lorsque l'on doit 
manipuler de tres gros fichirers (> centaines de Megas), le gain (ou la 
perte) de performance est non-negligeable.

Explication : Chaque ER est "compilee" et ensuite executee par une fonction 
comprenant cette forme compilee. Ce qui fait que nous aurons 2 appels de 
fonction par ER a interprete. De plus, l'ER N doit relire le buffer resultat 
de l'execution de l'ER N-1... En poussant a l'extreme, sed acceptant 100 ER a 
la fois, nous aurions 100 scan de buffer + 200 appels de fonction... par 
ligne dans le fichier ! 

dc




More information about the gull mailing list