À ma demande, Marc Chouteau a écrit :
A la demande générale, voici un petit troll ;)
Il progresse, ce garçon, il apprend à générer un trafic conséquent via la polémique sur son blog... qui est motorisé en PHP.
Bon. comme promis, je te réponds :
PHP est intrinsèquement LENT.
Oui, car c'est un langage interprété à la base.
Néanmoins, il peut être précompilé au runtime. Et à partir de là, précompilé de manière permanente.
Ensuite, il a différentes astuces d'accélération. Certaines fonctions ou manières d'écrire entraîne des temps d'exécutions plus lents que d'autres. Un appel statique sera toujours plus rapide qu'une classe instanciée, mais c'est à toi de voir si tu acceptes un code spaghetti. Avoir de multiples inclusions est un facteur de ralentissement comme pour Javascript, car il est soumis aux mêmes problématiques. Certaines fonctions de débug (comme FirePHP) entraînent de très forts ralentissements, ce qui fait que malgré les services inestimables de cette bilbiothèque, il vaut mieux ne jamais le laisser sur un service en live. (de toutes façons, il ne faut JAMAIS le laisser car c'est un trou potentiel de par les informations qu'il divulgue)
Certaines bibliothèques extérieures, pourtant en binaire, peuvent ralentir sensiblement le service (comme GDlib, ou les libs OpenOffice), d'autres l'accélèrent grandement.
Et puis surtout il y a les méthodes de programmation. L'exécution déférée, la préparation de requêtes SQL (me fait gagner en vitesse et sécurité de manière prodigieuse), voire même préférer à de trop puissantes fonctions regex leurs équivalents précompilées.
Intrinsèquement, le PHP est lent, mais il suffit d'étudier certains aspects fondamentaux du développement d'un langage, de se plonger dans le code source et d'abandonner ses méthodes de script-kidding pour arriver à des gains monumentaux. Le simple fait d'avoir la compression gzip en sortie de flux (hint : gratuit sur PHP, activable dans les prefs), donne une impression de rapidité non négligeable.
Marc, comme je sais que tu abandonnes le Visual Basic™ pour tes sites web, voici un site qui est d'une lecture très utile : http://phpbench.com/. Ma liste de liens n'est pas très à jour, mais elle comporte quelques articles passionnants.
(Et hop.... j'ai même pas besoin de publier une chronique BD aujourd'hui)
6 réactions
1 De Z - 19/06/2009, 12:11
http://www.wrensoft.com/zoom/benchm... du grand n'importe quoi... le CGI plus rapide qu'un PHP/ASP? Soit. Tenter de lancer plusieurs dizaines de recherches simultanée, et on en reparle.
C'est de plus un faux problème, vu les volumes des site utilisant PHP ou ASP. Si Java est si utilisé, c'est justement parcequ'il allie les 3 choses fondamentales pour un site professionnel: 1) maitrise de la mémoire 2) rapidité 3) stabilité. C'est le compromis entre les niveaux de ces contraintes qui dirige le choix d'une techno pour un site.
2 De Da Scritch - 19/06/2009, 13:11
Je suis d'accord, surtout que les arguments que je donne concernent n'importe quel langage interprété.
D'où le billet que je viens de mettre en ligne, qui propose une méthodologie d'analyse plus poussée.
3 De Microogle - 19/06/2009, 13:13
J'ajouterai pour Z qu'il faut que l'equipe de dev soit motivée par le techno, sinon echec assuré.
4 De da scritch net works - 03/07/2009, 10:41
L'open-source ne s'oublie pas, comme les recettes de
Parce que justement;, les recettes de cuisines, si elles n'étaient pas open-source, ça ferait hyper-longtemps qu'on aurait oublié comment faire un bœuf bourguignon autrement qu'en ouvrant une boîte....
5 De da scritch net works - 03/07/2009, 12:35
Référencement : La preuve par l'exemple
Tout est dans le code. Payer des référenceurs, c'est de l'argent jeté par les fenêtres. Tout est dans la manière de parler aux moteurs de recherches, la sémantique....
6 De da scritch net works - 04/07/2009, 17:23
L'open-source ne s'oublie pas, comme les recettes de
Parce que justement, les recettes de cuisines, si elles n'étaient pas open-source, ça ferait hyper-longtemps qu'on aurait oublié comment faire un bœuf bourguignon autrement qu'en ouvrant une boîte....