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

Signaler
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
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

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 +
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 !!!! ;)
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 ^^
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006

flemme ^^
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 ^^
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
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!
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 ;-)
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
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?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
Dis donc, ca demande de l'investissement pour utiliser ton bench avec certaines fonctions ;-)
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 ^^
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é
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006

T'as pas msn plutot ? ^^
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 ;)
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 ^^
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
lol
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 :)
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
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
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 ++
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006

Pas mal l'article ^^
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
merci ;-)
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).
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++
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 ++
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

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 ;)
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
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 ;-)
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)
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
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 ;-)
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 ^^
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 ! ');
}
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
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 :)
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 ;-)
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 ++