Benjamin Eberlei, l'un des développeurs de Doctrine 2, a ainsi envoyé sur internals@ le résultat de l'exécution de la suite de tests de Doctrine 2 par la version de PHP actuellement dans le trunk.
Ces tests font massivement appel à de la manipulation de chaînes de caractères et de tableaux, et utilise peu, voir pas du tout, du code provenant d'extensions à PHP.
Ils consistent à transformer 10 000 enregistrements issue d'une table en base de données en un objet Doctrine, la base de données étant complétement simulée afin de ne pas parasiter les résultats et prendre uniquement en compte les performances de PHP.
Ils sont donc très adaptés pour quantifier le gain apporté par les efforts d'optimisation de Dimitry Stogov sur le moteur de PHP, puisqu'ils ont notamment portés sur la gestion des chaînes de caractères et de la mémoire vive.
Il en ressort que les tests s'exécutent entre 30 et 40% plus rapidement avec la version du trunk de PHP qu'avec PHP 5.3.3, la prochaine mise à jour mineure de la branche actuelle.
Cerise sur le gâteau, la consommation de mémoire vive a baissé de pratiquement 10 Mo, ce qui revient à dire que la version du trunk demande 25% de RAM en moins pour effectuer le même travail, ce qui confirme les résultats que Sébastien Bergmann, le développeur de PHPUnit, avait déjà précédemment divulgué.
Il avait en effet constaté une baisse de la consommation de mémoire vive de l'ordre de 15% lors de l'exécution de tests unitaires de PHPUnit.
La prochaine version majeure de PHP sera donc, c'est maintenant un fait établit, non seulement plus rapide, mais aussi plus efficace au niveau de la gestion de sa mémoire, ce qui permettra d'exécuter plus de code plus efficacement, et donc à infrastructure technique identique, d'augmenter les performances globales et ainsi pouvoir traiter, par exemple, plus de requêtes HTTP sur un serveur uniquement en mettant à jour PHP.
11 réactions
1 De Jean-Marc Fontaine - 03/05/2010, 18:49
A force de voir des gains de performance aussi substantiels à chaque version, même mineure, il y a de quoi se demander comment a été conçu PHP à la base tout de même.
2 De mageekguy - 03/05/2010, 19:15
@Jean-Marc Fontaine : Je me suis fait exactement la même réflexion, mais comme j'essaye d'être un minimum neutre sur les billets concernant PHP X, (et je peux te dire que c'est difficile) je me suis retenu de le souligner.
C'est toi qui l'a fait, c'est très bien, je suis dédouané :).
Et puis, nous savons très bien tous les deux à quoi nous en tenir à ce propos au sujet de PHP...
3 De pluriels - 03/05/2010, 21:05
Effectivement, ça peut faire peur, mais d'un autre côté, est-ce que les autres architectures, .NET ou Java ont fait l'objet d'une remise en question sur leurs fondamentaux ?
Je trouve que PHP montre encore une belle marge de manœuvre, tant au niveau du Zend Engine, que sur les extensions et les couches logicielles comme les frameworks.
4 De cyruss - 03/05/2010, 23:32
Tout à fait d'accord avec JMF. A chaque version on annonce que PHP va plus vite. C'est quand même étrange !!!
5 De metagoto - 04/05/2010, 07:13
Merci pour ces news concernant php. Je ne suis plus du tout la liste internals ni ne m'interesse à php (je m'astreins à 2 mois de php par an, juste pour la forme). Du coup ces résumés m'aident bien parce que c'est "sans efforts" (de ma part!) ; )
6 De mageekguy - 04/05/2010, 08:49
@metagoto :C'est à cela que ca sert.
Suivre internals@ et le log svn, tout en recoupant les infos pour ne pas raconter trop de bétises demande énormément de temps, je comprend donc très bien que tu préfére profiter du produit fini ;).
Et pour info, ce billet n'est pas un résumé, mais juste un "point" que j'ai voulu mettre en valeur.
Les résumés sont faits tous les 10 jours, sous le titre "Mort de PHP6 + X jours", X variant de 10 à l'infini, et on est bien parti pour l'infini...
7 De orouk - 04/05/2010, 09:42
Moi je retiens le message de pluriels. C'est finalement 1 très bonne nouvelle.
Demain php avec ces évolutions + hiphop (ou autres compilation genre roadsend appliqué aux produits phares: drupal, etc) sera sans doute une solution encore plus incontournable.
Mais qu'en est-il au niveau des benchmarks sur des fonctionnalités comparables entre php, java et .NET ?
Merci pour ces infos
8 De syndr0m - 04/05/2010, 14:30
@orouk: si tu microbenchmark php vs .net tu vas pleurer, je l'ai fait il y a 6 mois (boucles / calculs / manipulations de tableau, etc..) et .net était environ 30 fois plus rapide que php sur tous les tests (jusque x44!), d'ailleurs les mêmes tests portés en js sous V8 (le moteur de chrome) sont environ 7,2 fois plus rapide que php ! c'est pour ça que dans l'absolu hiphop, en dehors des contraintes liées à son utilisation, ça me fait bien rigoler ...
php n'est pas connu pour sa performance .. en fait php a pour seul avantage d'être utilisé par une vaste communauté (avantage historique) qui permet aux entreprises d'avoir de nombreux développeurs pas cher.
niveau langage en lui même, c juste a vomir : entre API à plat, verbosité extrême, implémentation objet douteuse, concepts ajoutés à la ramasse (closures, scopes, etc.)..
Pour terminer, je dirais que la pauvreté de ce language n'a d'égal que le niveau de la communauté php que je qualifierai de "fond du panier" . Un espèce d'univers ou règne le niveau 0 de l'ingénierie informatique..
d'ailleurs quand on voit que symfony 2 se markete sur des patterns de conceptions hyper basiques ... ça laisse dubitatif.
mais bon, comme beaucoup d'entre vous, j'en fait pour manger, ce qui n'empeche pas d'avoir un avis critique.
9 De mageekguy - 04/05/2010, 18:28
@syndr0m : Avoir un avis critique ok, le donner en argumentant avec des généralités, bof.
Partage au moins le code de tes tests, je connais des gens qui seraient très intéréssés de pouvoir comparer tes résultats avec les leurs.
Quand à critiquer la communauté aussi largement et aussi sauvagement... Certes, il y a de mauvais, voir même de très mauvais développeurs PHP, mais c'est valable pour tous les langages.
Et de même, le langage a des défauts, mais c'est également valable pour tous les langages.
J'ai franchement hésité avant de publier ton commentaire qui ressemble fortement à un bon vieux troll, mais je te laisse ta chance.
10 De metagoto - 04/05/2010, 18:50
J'avais fait quelques benchmarks php vs V8, tous les deux en version trunk à l'époque de php 5.3 sur une arch ia32. Je confirme les resultats de syndr0m juste au dessus: V8 environ 10 fois plus rapide que php pour les opérations de base (incrémentations, boucles etc). Pour les manipulations d'objets (funcs, closures) V8 distançait encore plus php. Le tout sans système de cache que ce soit coté php ou V8.
11 De orouk - 05/05/2010, 08:06
Et les perfs par rapport à Java ?