Auteur Sujet: Réalité ou légende?  (Lu 8748 fois)

Hors ligne guile

  • Membre Junior
  • **
  • Messages: 56
  • Karma: +1/-0
Réalité ou légende?
« le: 27 juin 2009 à 22:25:44 »
Bonjour,

J'ai lu par ci par là des conseils pour rendre PHP plus performant.
Dernièrement j'ai vu cette vidéo : http://www.youtube.com/watch?v=Sibg0T3wKs4

Curieux, je me suis mis à vérifier ce qu'on me dit... et je voulais avoir votre avis sur la question.

Mais avant que vous ne donniez votre avis, faites ce test s'il vous plaît :
<?php
$_tata 
= array('tata0''tata1''tata2''tata3');
ob_start("ob_gzhandler");
$start microtime(true);
for (
$i 0$i 100000$i++) {
$toto mt_rand(0100);
$titi rand(-33);
$tata $_tata[mt_rand(03)];
//print "toto=$toto tata=$tata titi=$titi";
//echo "toto=$toto tata=$tata titi=$titi";
//echo 'toto=' . $toto . 'tata=' . $tata . 'titi=' . $titi;
echo 'toto='$toto'tata='$tata'titi='$titi;
}
$end microtime(true);
ob_end_clean();

ob_start("ob_gzhandler");
echo 
$end $start;
ob_end_flush();

?>


Tout ce que vous avez à faire, c'est noter les durées pour chacune des lignes du for (vous en décommentez une, et commentez les autres.

De mon côté les conclusions sont : la première solution est relativement la meilleure. Je gagne moins de 5 centièmes de secondes pour 100 000 itérations. Ceci est loin des performances que l'on peut gagner en écrivant du vrai code performant...

Qu'en pensez-vous?

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Réalité ou légende?
« Réponse #1 le: 28 juin 2009 à 10:38:25 »
Un certain "Prélude" en parlait en mars 2006 : http://www.magazine-jeux.com/Optimisation-du-code-2.html
Egalement ici : http://www.magazine-jeux.com/Optimisation-les-boucles.html
Et ici : http://www.magazine-jeux.com/Optimisation-du-code.html

Les gains de temps ne sont pas transcendants, mais peuvent dans certains cas bien précis être utiles.

Hors ligne guile

  • Membre Junior
  • **
  • Messages: 56
  • Karma: +1/-0
Re : Réalité ou légende?
« Réponse #2 le: 29 juin 2009 à 22:12:28 »
J'ai parcouru un court moment tes articles fort intéressants, mais ils n'avaient pas abordé le point que la vidéo du monsieur de Google avait soulevé : simple quote, double quote, echo, print.

De mon côté, je n'ai rien vu de transcendant, et je me pose réellement la question de l'utilité de faire ceci.

Pour tes conseils d'optimisation sur magazine-jeux.com, j'ai appris pas mal de choses, même si je pense qu'un code lisible et compréhensible vaut mieux qu'un code qui fait gagner 0.1%. Néanmoins, ce type de gain peut valoir le coût si le site génère des centaines, voire des milliers de connexions à la minute.

Mais nous sommes ici pour discuter justement de cette technique, ou d'autres, qui permettent de gagner ce 0.1% de perf'. En accumulant ces efforts partout, on peut atteindre 10%...
« Modifié: 29 juin 2009 à 22:15:33 par guile »

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Réalité ou légende?
« Réponse #3 le: 29 juin 2009 à 23:59:02 »
En effet, je n'ai pas parlé de ces quotes simples ou double etc.
Il faudrait que je le fasse une de ces 4.
Les simples quotes devraient être plus rapides puisqu'elles n'interprètent pas le contenu, contrairement aux doubles quotes.
Mais tu soulèves bien le problème de l'intérêt de ces optimisations : en général, nous n'avons pas de sites ayant de tels besoins d'optimisations.
MAIS... J'ai un site qui demande ce genre d'optimisation justement. Non pas qu'il fait beaucoup de visites, mais il compile pas mal de logs. C'est mon site (en bêta test pour l'instant) de récupération des stats de nos jeux pour savoir combien de joueurs potentiels nous avons en tout. Les stats sont donc relativement énormes et ce type d'optimisation est pris en compte dans le développement.
Mais pour un site n'ayant pas ces besoins, le temps utilisé à optimiser est trop important en rapport aux résultats.
Par contre, il est bon de prendre de bonnes habitudes. Et ces optimisations peuvent être mises en place pour la plupart sans se poser de question à partir du moment où cela devient naturel.

Hors ligne SorenS

  • Membre Junior
  • **
  • Messages: 91
  • Karma: +0/-0
  • Développeur web PHP
    • Kueny Raphaël - Développeur web php
Re : Réalité ou légende?
« Réponse #4 le: 30 juin 2009 à 00:54:12 »
Citer
Pour tes conseils d'optimisation sur magazine-jeux.com, j'ai appris pas mal de choses, même si je pense qu'un code lisible et compréhensible vaut mieux qu'un code qui fait gagner 0.1%. Néanmoins, ce type de gain peut valoir le coût si le site génère des centaines, voire des milliers de connexions à la minute.
Un site peut toujours être amené à évoluer. De plus autant faire le boulot bien dès le début non ? Si une façon d'écrire est plus optimisée mais moins lisible, une ligne de commentaire gomme ce défaut non ?

Citer
En effet, je n'ai pas parlé de ces quotes simples ou double etc.
Il faudrait que je le fasse une de ces 4.

J'en parle rapidement ici :
http://rkueny.fr/developpement-web/php-fiche-pratique


Pour moins l'optimisation du code devient naturel. Je trouve que cela fait bâclé et mal fini si ce n'est pas fait. De plus, si tu t'y es penché une fois cela devient une habitude de préféré une façon de faire à l'autre. Je garde surtout en tête que mon code peut servir pour plusieurs sites et même à des sites à fortes charges
--- Développeur web php passionné de jeux web ---

Hors ligne keke

  • Animateur
  • Membre Junior
  • *****
  • Messages: 89
  • Karma: +3/-0
    • Magdales
Re : Réalité ou légende?
« Réponse #5 le: 30 juin 2009 à 10:41:17 »
Citer
Pour moins l'optimisation du code devient naturel. Je trouve que cela fait bâclé et mal fini si ce n'est pas fait. De plus, si tu t'y es penché une fois cela devient une habitude de préféré une façon de faire à l'autre. Je garde surtout en tête que mon code peut servir pour plusieurs sites et même à des sites à fortes charges
Naturel ? hum, de l'ordre du réflexes tu veux dire ...
En mon sens, la création amateur ne dispose pas énormément de temps de conception. Ca dépend des équipes, mais perso, quand je code, il y a encore une partie de floue quand à la représentation générale de ma fonction.
Si je passe ma réflexion à optimiser mon code, je vais y perdre sur le fonctionnel.

Enfin, les considérations de bâclé ou mal fini quand on lit un "toto" au lieu de sa version optimisée 'toto', me semble toute personnelle. Si tu lis un jour mon code, tu le trouveras baclé, tout comme si je pose mes yeux sur le tiens. Cela vient du fait que l'on n'a pas les mêmes attentes vis à vis de notre travail.

kéké
Kéké : administrateur de Magdales.

Hors ligne SorenS

  • Membre Junior
  • **
  • Messages: 91
  • Karma: +0/-0
  • Développeur web PHP
    • Kueny Raphaël - Développeur web php
Re : Réalité ou légende?
« Réponse #6 le: 30 juin 2009 à 13:43:29 »
Tout à fait Kéké c'est personnel comme impression.
Ce que je veux dire dans "naturel" c'est que, par exemple, s'il existe deux façons de faire la même chose je vais m'arrêter, regarder et choisir la "meilleure" au niveau optimisation.

Après nous avons bien sûr pas la même façon de coder !
--- Développeur web php passionné de jeux web ---

Hors ligne keke

  • Animateur
  • Membre Junior
  • *****
  • Messages: 89
  • Karma: +3/-0
    • Magdales
Re : Re : Réalité ou légende?
« Réponse #7 le: 30 juin 2009 à 15:00:17 »
Ce que je veux dire dans "naturel" c'est que, par exemple, s'il existe deux façons de faire la même chose je vais m'arrêter, regarder et choisir la "meilleure" au niveau optimisation.

Après nous avons bien sûr pas la même façon de coder !
J'entends bien ^^.

Si la question est : "ne pas finir un projet" OU "bâcler le travail" ?
J'imagine que tu feras cependant le même choix que moi ^^.

Je crois que nous sommes tous les 2, des personnes suffisamment mûres pour essayer de faire des projets au mieux de nos possibilités. Après, tout est une question de dosage. Tu passeras plus de temps à optimiser des pouillèmes de secondes sur un écho assez répétitif, pendant que je m'occuperais de ma famille ^^.

kéké
Kéké : administrateur de Magdales.

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Réalité ou légende?
« Réponse #8 le: 30 juin 2009 à 15:57:53 »
Tiens, ça me fait penser que ça ferait un bon "concours" ça : optimiser un code bien précis de façon à le faire tourner en moins de temps possible.
Je lancerais bien cette idée. Juste pour le fun, pas de gain (j'ai pas les moyens, à moins que vous vouliez une planche originale de Gouik ?!).
Vous n'en pensiez quoi donc ?!

Hors ligne SorenS

  • Membre Junior
  • **
  • Messages: 91
  • Karma: +0/-0
  • Développeur web PHP
    • Kueny Raphaël - Développeur web php
Re : Réalité ou légende?
« Réponse #9 le: 30 juin 2009 à 16:15:41 »
@kéké : et oui pas de famille encore :) j'en profite tant que je peux !!!
Je ne passe pas mon temps à optimiser mon code non plus bien entendu, mais de temps en temps ça ne fait pas de mal :)

@prélude : excellent idée !!! Ca peut être cool. Et oui pour une planche originale de Gouik :)
--- Développeur web php passionné de jeux web ---

Hors ligne karu

  • Néophyte
  • *
  • Messages: 9
  • Karma: +0/-0
Re : Réalité ou légende?
« Réponse #10 le: 05 juillet 2009 à 19:37:22 »
toutes ces "astuces" d'optimisation sont souvent traitre.
leurs performance dépendant de la config aussi bien que de la spécificité du code.

or on voit rarement des tests avec des séries de tests pour déterminer les plages de validités des résultats.



 




Hors ligne keke

  • Animateur
  • Membre Junior
  • *****
  • Messages: 89
  • Karma: +3/-0
    • Magdales
Re : Réalité ou légende?
« Réponse #11 le: 04 août 2009 à 09:33:44 »
[quote au
or on voit rarement des tests avec des séries de tests pour déterminer les plages de validités des résultats.

Bien dit. Les tests ne sont pas toujours valables dans le temps ...
Kéké : administrateur de Magdales.