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 : 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 );
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 : 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 );
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 !