Vous n'êtes pas connecté - 1 Membre connecté
Catégories
Graphisme
Flash (51)
Print (66)
Programmation
PHP (66)
ASP (2)
CSS (26)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (261)
933 Sujets
12337 Réponses
Programmation > PHP > Regexp : Ereg serait plus r...
Regexp : Ereg serait plus rapide que Preg ?
 Bonjour à tous,

Ayant toujours appris qu'il été recommandé d'utiliser les fonctions PREG de php, au lieu de EREG,
pour la simple raison que PREG est compatible PERL (les expressions sont d'ailleurs éxécutés par PERL il me semble).

Voici un test que j'ai effectué :


<?php
// données
$dataP "`chp` = [%1234%]";
$dataE "`chp` = [%1234%]";

// remplacement avec PREG_REPLACE
$startPreg microtime(true);
$dataP preg_replace("#[%([^[]*)%]#"$db->quote('\1') , $dataP);
$finPreg = (microtime(true) - $startPreg);

// remplacement avec EREG_REPLACE
$startEreg microtime(true);
$dataE ereg_replace("[%([^[]*)%]"$db->quote('\1') , $dataE);
$finEreg = (microtime(true) - $startEreg);

echo 
$dataP '-' $dataE '<br/>';
echo 
'Preg : ' $finPreg '<br/>' 'Ereg : ' $finEreg;
?>


Et voici le résultat :


`chp` = '1234'-`chp` = '1234' // le résultat est ok

Preg : 1.9761528968811
Ereg : 0.00011086463928223

N'est-ce pas bizarre ?
Posté le 14 03 2007 à 19h08
Phoenix - Membre - www

Réponses - Regexp : Ereg serait plus r...
 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. :)
Posté le 14 03 2007 à 22h46
McFly - Membre - www
Bon ya vraiment un blème avec la balise code. Le texte qui suit la balise [/code] n'est pas mis en forme, ou rogné certaines fois. Quid Benzor?

Genre là j'avais tapé:
----------------------- ------------------------------ ------------------------------ ------------------------------ -------
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
----------------- ------------------------------ ------------------------------ ------------------------------ -------------

mais c'est tout en une seule ligne, et quand je clique sur éditer, c'est bien comme je l'avais tapé.

Ensuite j'ai ajouté un PS mais ca a zappé ce que j'avais tapé avant.

C'est cocasse non?
Posté le 14 03 2007 à 22h50
McFly - Membre - www
Merci de ta réponse, en effet, j'aurais du pousser un peu plus mon test ! ^^

C'est bon à savoir en tout cas !
Posté le 15 03 2007 à 00h27
Phoenix - Membre - www
oui il y a un gros soucis avec la balise {code}
mais je n'ai pas encore trouvé ce qui posait problème
Posté le 15 03 2007 à 09h19
gom - Administrateur - www
Fais peter le code par email Gom. :) J'adore debuguer. :)
Posté le 15 03 2007 à 13h02
McFly - Membre - www
Sujets PHP
<< 1 2 3 4 5 6 7 >>
openid
Auteur : senkante
Posté le 12 06 2007 à 17h19
3 Réponses (Nouveau sujet)
Sujet visité 1152 fois
Durée d'un fichier (...)
Auteur : adrien
Posté le 12 06 2007 à 18h33
2 Réponses (Nouveau sujet)
Sujet visité 1104 fois
Traitement fichier (...)
Auteur : aguenard
Posté le 04 06 2007 à 15h05
2 Réponses (Nouveau sujet)
Sujet visité 877 fois
Fonction de (...)
Auteur : aguenard
Posté le 31 05 2007 à 14h13
5 Réponses (Nouveau sujet)
Sujet visité 1415 fois
Récupérer état dans (...)
Auteur : aguenard
Posté le 11 05 2007 à 10h38
16 Réponses (Nouveau sujet)
Sujet visité 1696 fois
Fonction (...)
Auteur : aguenard
Posté le 14 04 2007 à 19h37
7 Réponses (Nouveau sujet)
Sujet visité 2332 fois
Regexp : Ereg serait (...)
Auteur : Phoenix
Posté le 14 03 2007 à 19h08
5 Réponses (Nouveau sujet)
Sujet visité 1017 fois
Date II, the revenge
Auteur : tyler
Posté le 12 02 2007 à 15h54
15 Réponses (Nouveau sujet)
Sujet visité 1080 fois
Proposition de stage
Auteur : bob
Posté le 14 02 2007 à 17h30
1 Réponse (Nouveau sujet)
Sujet visité 710 fois

Sujet bloqué
Inverse de (...)
Auteur : tyler
Posté le 09 02 2007 à 12h13
6 Réponses (Nouveau sujet)
Sujet visité 1106 fois
<< 1 2 3 4 5 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006