Pas forcément.
1. ton test repose sur une chaine de caractères simple et courte, ce qui n'est pas très significatif.
2. tu ne fais la comparaison qu'une seule fois, faut faire un peu de benchmarking pour avoir une meilleure idée.
3. tu n'as pas inclu dans ton texte la possibilité d'avoir deux tableaux pour les patterns et remplacements. Une seule passe serait nécessaire avec preg_replace pour faire 10 remplacements avec 10 patterns quand il faudrait 10 passes avec ereg_replace.
Pour commencer j'ai fait le même test que toi, et j'ai eu la même surprise. Je rafraichis la page, c'est quasi le même temps... On dirait que PHP a besoin de se faire un tour de chauffe. ;)
Ensuite j'ai fait le test suivant:
<?php
// données
$dataP = "`chfdsp` = [%1234%]";
$dataE = "`chfdsp` = [%1234%]";
$max = 1;
// remplacement avec PREG_REPLACE
$startPreg = microtime(true);
for ($i=0;$i<$max;$i++)
$resP = preg_replace("#[%([^[]*)%]#", '1' , $dataP);
$finPreg = (microtime(true) - $startPreg);
// remplacement avec EREG_REPLACE
$startEreg = microtime(true);
for ($i=0;$i<$max;$i++)
$resE = ereg_replace("[%([^[]*)%]", '1' , $dataE);
$finEreg = (microtime(true) - $startEreg);
echo 'Preg : ' . $finPreg . '<br/>' . 'Ereg : ' . $finEreg."<br />";
echo 'Ereg / Preg = ' .($finEreg/$finPreg)
?>
Suffit de changer la valeur de $max pour s'amuser et constater que:
max = 1 => Ereg est plus rapide.
max = 2 => Preg est plus rapide.
max = 10 => Preg est 2 fois plus rapide.
max = 100 => Preg est 3 fois plus rapide
etc
Donc on ne t'a pas menti, Preg est plus rapide quand il y a plus d'opérations à faire.
J'aime beaucoup ce genre de sujet, ça fait creuser un peu dans PHP. :)