CLASS BENCH - COMPARATEUR DE CODE PHP AVEC DIFFÉRENCE ENTRE CHAQUE CODE ET CODE

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
- - Dernière réponse : cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
- 23 févr. 2005 à 06:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29560-class-bench-comparateur-de-code-php-avec-difference-entre-chaque-code-et-code-plus-rapide

cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Salut,

bon ça va, j'avoue que j'ai vu pire ;-)

bon j'ai quand même trouvé quelques trucs :

$array array('0'> "$code");

que tu peux remplacer par :

$array = array(0=>$code);

Ensuite ça :

$this->code = str_replace('<?php', '', $code);
$this->code = str_replace('<?', '', $code);
$this->code = str_replace('?>', '', $code);

par la fonction strtr :

$tableau=array('<?php'=>'','<?'=>'','?>'=>'');
$this->code=strtr($code,$tableau);

Ensuite pour le XHTML est à remplacer par (tu peux appliquer un style font-style:italic dans la CSS pour les balises )

a ++
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Je te mets 8/10 ;-)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Merci antho je cherchais justement un truc pour mon str replace xD

Bon je poste la modif pour le truc avec plusieurs noms bientot :)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Voila maintenant faut un array pour $code et $nom_du_bench
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
ça aussi :

if(!is_array($code)) {
echo 'La variable $code n\'est pas un tableau ! ';
die();
}

if(!is_array($nom_du_bench)) {
echo 'La variable $nom_du_bench n\'est pas un tableau ! ';
die();
}

tu peux le remplacer par ça :

if(!is_array($code)) {
die('La variable $code n\'est pas un tableau ! ');
}

if(!is_array($nom_du_bench)) {
die('La variable $nom_du_bench n\'est pas un tableau ! ');
}
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
grmbl, t'as d'la chance j'avais un autre truc a modifier ^^
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
je lis "is_file est environ 1,20 à 1,80 fois plus rapide que file_exists quand le fichier existe."

pas mal comme test, je sens que je vais remplacer certaines fonctions de mon site ;-)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
chacun son tour pour la modification de code xD je fais les modifs dans une quinzaine de minutes
samueldr
Messages postés
121
Date d'inscription
samedi 23 août 2003
Statut
Membre
Dernière intervention
3 juillet 2005
-
es-t-il possible d'avoi un lien pour un cours simple pour les classes, je pige toujours pas, sinon, j'aurais peut-être fait mon code en classes ...

et ouais, il m'a l'air bien ton code fuckya
j'ai pas tout bien compris, mais il a l'air bien construit, plus que le mien.

je ne noterai pas, parce que je ne l'ai pas essayé.

Merci à celui qui m'envoiera un lien sur les classes (français ou anglais, peu importe)
malalam
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Hello,

efficace et sympa :-)
Je sens que ca va m'amuser un moment!
Je vais lancer des paris sur la rapidite de telle ou telle fonction ;-)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
http://www.phpdebutant.org/article42.php samueldr ;)

Malalam > Fais nous part de tes résultats ;)
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Salut,

une petite idée de test : strtr VS str_replace (en passant des tableaux aux deux fonctions)

je viens de voir sur un site que str_replace est plus rapide, faudrait le confirmer si possible.

Petit test :

a ++
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Bon je viens de concevoir un article sur l'optimisation de PHP et quelques tests :

http://www.vulgarisation-informatique.com/optimiser-php.php

a++
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
Viens de le lire, c'est un bon article! Il est dors et déjà dans mes bookmarks, et je vous encourage à aller le lire (c'est vite fait).
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
merci ;-)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Pas mal l'article ^^
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Je reçois ça par mail (merci pour l'anonymat, ça m'aide vachement à avancer) :

"Dans ce bout, je ne suis pas sûr qu'avec la virgule c'est une concaténation...

d'après ce que j'avais vu sur PHPCS, c'est seulement que les paramètres de fonctions qui sont séparés par des virgules, donc c'est comme si c'était divers echo de suite."

Je suis d'accord en partie sur ce point, seulement tu mets bien plusieurs paramètres à la suite mais collés (je me comprends), ce n'est pas comme les arguments d'une fonction au sens propre (après peut-être qu'en interne si).

Bref je garde ce terme ;-)

a ++
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Tiens faudrait que j'intègre un truc qui fait des graphiques avec possibilité de sauvegarde du graph...:D
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
j'ai posté une classe qui fait des graphiques si tu veux:

http://www.phpcs.com/code.aspx?id=13345
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Merci je vais y faire un tour :)
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
lol
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Ouf, faudra que tu m'explique ta source kirua j'comprends pas trop ^^
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
kirua at coder-studio point com
à ton service ;)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
T'as pas msn plutot ? ^^
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
nah, je vais plus sur msn, désolé
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
bon tant pis, je me débrouillerais ^^
malalam
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Dis donc, ca demande de l'investissement pour utiliser ton bench avec certaines fonctions ;-)
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
Ouais il faut parser de facon a ce que ca marche :s

Avec un textarea et un addslashes ca devrait marcher non?
zoukozouko
Messages postés
148
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
21 janvier 2009
-
anthomicro:
j'allais justement intervenir sur la correction:
" $this->code = str_replace('<?php', '', $code);
$this->code = str_replace('<?', '', $code);
$this->code = str_replace('?>', '', $code);

par la fonction strtr :
$tableau=array('<?php'=>'','<?'=>'','?>'=>'');
$this->code=strtr($code,$tableau);
"
strtr est une fonction qui permet surtout de rendre le code plus claire et moins touffu, mais au final, au niveau du temps d'exécution, la décomposition de la fonction est forcément plus rapide:

for ($i=0; $i<10; $i++) {}
est aussi rapide que
$i++;
$i++;
$i++;
$i++;
$i++;
$i++;
$i++;
$i++;
$i++;
$i++;
mais c'est plus joli.
Les fonctions distribuées pas la lib php nous permet d'éviter de les réécrire, on peut considérer qu'elle sont toutes optimisées.
mais il est plus rapide de mettre le corps de la fonction (si tu le connais) plutot que l'appel a la focntion:

function f(......)
{ ......corps de la fonction....}

....code....
f(........);
....code......

est plus lent que

.....code........
........corps de la fonction........
.........code.........

puisqu'il oblige l'interpreteur php à faire un appel a la fonction.
dans les langages comme C ou JAVA par contre, c'est la meme chose, puisque le programme est compilé, et en assembleur ca dont la meme chose.
Sinon, meme si c'est plus lent, j'utiliserai putot ta methode plus jolie et compacte, sachant que ca ne me derange pas (personnellement) que les utilisateurs de mes sites passent 0.000001 seconde de plus a charger ma page ....(les pauvres) lol
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Pour strtr elle est plus lente effectivement, mais elle est plus lente comparée à un str_replace avec des tableaux passés en paramètres, pour ce qui est de plusieurs str_replaces faudrait faire le test ;-)
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
Je pense qu'il y a de tte façon une imprécision liée à la mesure du temps bien supérieure aux temps mesurés, mais soit.

Sinon, dérouler une boucle est tjs plus rapide qu'exécuter une boucle; y a qu'à voir en C/C++ à quel point ça joue dans les optimisations!
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
J'ai essayé de faire le test avec strtr et les plusieurs str_replace et j'ai pas réussi à l'écrire correctement dans la fonction xD
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
lol, bah fais-le à la main alors ^^
fuckya
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006
-
flemme ^^
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
tu m'étonnes....

Bon si j'ai le temps je rajouterai ça à mon article, mais bon flemme aussi ^^
samueldr
Messages postés
121
Date d'inscription
samedi 23 août 2003
Statut
Membre
Dernière intervention
3 juillet 2005
-
au lieu d'utiliser la classe pr les strtr et str_replace, utilisez la base de mon code ;)

plus simple lorsque le code est complexe (menfin, je crois)
http://www.phpcs.com/code.aspx?id=29497

Ha non, pas de la pub !!!! ;)
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Bah de toute façon perso pour mes tests j'ai un truc dans ton genre, pas de classe je trouve ça trop lourd.

a +