Salut,
Je suis en train de créer un mini moteur de template qui se veut dynamique, et je me posais quelques questions sur les performances de celui-ci. Je cherche donc à optimiser au maximum l'expression régulière et je viens de tomber sur quelques résultats assez surprenants ..
Par exemple :
Dans ce cas, j'ai toujours appris que le (.*) couplé du Ungreedy était lourd et gourmand en ressource. Ce qui est le cas, vu que la première ligne est plus rapide à s'exécuter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $html = '<p>{pseudo} - {age} ans</p>'; $pseudo = 'Bisunurs'; $age = '28'; preg_replace( '¤{([^{]*)}¤e', '$\\1', $html ); preg_replace( '¤{(.*)}¤Ue', '$\\1', $html );
Seulement d'après mes tests, elle ne l'est que de 0.00134 % ! Il me semblait pourtant que c'était vraiment beaucoup plus lourd ..
Autre exemple, avec un délimiteur plus évolué :
Dans ce cas en revanche C'est le Ungreedy qui remporte la partie et est 1.412 % plus rapide ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $html = '<p>{:pseudo:} - {:age:} ans</p>'; $pseudo = 'Bisunurs'; $age = '28'; preg_replace( '¤{:(.*)(?!:{):}¤e', '$\\1', $html ); preg_replace( '¤{:(.*):}¤Ue', '$\\1', $html );
Quelqu'un saurait-il pourquoi ?
Y aurait-il un meilleur moyen d'optimiser ce genre de script ?
Merci !
Partager