Optimisation d'un pattern
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 :
Code:
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 ); |
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.
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é :
Code:
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 ); |
Dans ce cas en revanche C'est le Ungreedy qui remporte la partie et est 1.412 % plus rapide ..
Quelqu'un saurait-il pourquoi ?
Y aurait-il un meilleur moyen d'optimiser ce genre de script ?
Merci !