Lors de la sortie de PHP 5, en 2005, ses performances étaient significativement en retrait par rapport à PHP 4, mais depuis, chaque nouvelle version a apporté des améliorations à ce niveau.
La branche 5 a définitivement comblé son retard sur la branche 4 à ce niveau avec la version 5.2, et PHP 5.3 est à ce jour la version officielle de PHP la plus rapide, toute version confondue.
Cependant, il faudra bientôt le dire au passé, car PHP 5.4 est en effet à la fois plus rapide et moins consommateur de mémoire que la version 5.3.
Les gains sont de plus très significatifs sur chacun de ces points, car en fonction du contexte, il peut se révéler de 15 à 50% plus rapide que PHP 5.3, et 15 à 40% moins gourmand en mémoire vive.
Du moins, c'est ce que j'avais constaté en 2010 avec le code source issue de la branche de développement de PHP, mais comme depuis cette époque, il a beaucoup évolué, j'ai à nouveau effectué des tests, toujours en me servant de atoum, mon framework de tests unitaires pour php 5.3+, et cette fois avec la branche 5.4.
Les résultats ont été sans appel, puisque pour exécuter la suite de tests unitaires de atoum, PHP 5.4 est tout simplement 50% plus rapide que PHP 5.3.10 tout en consommant un peu plus de 30% de mémoire en moins.
Cependant, atoum fait appel à PHP en ligne de commande et fait de plus énormément appel à des fonctions de très bas niveau comme proc_open()
.
Son contexte de mise en œuvre est donc très éloigné du contexte d'utilisation classique de PHP, puisque ce dernier est utilisé massivement pour propulser des sites web.
Or, comme le démontre les derniers tests effectués par les développeurs du langage, dans un cadre plus classique, PHP 5.4 fait également mieux que PHP 5.3.
Les gains sont variables en fonction des applications testées, mais PHP 5.4 est capable de servir en moyenne 15% de requête par seconde de plus que PHP 5.3, tout en consommant en moyenne 30% de mémoire en moins, tout comme dans le cas de atoum.
Dans le cadre d'autres outils en ligne de commande, comme un générateur de documentation, le gain en terme de vitesse n'est que de 20% et le gain en terme d'occupation mémoire reste toujours aux alentours de 30%.
La version 2012 de PHP 5.4 est donc 30% moins gourmande en mémoire vive que PHP 5.3, indépendament de son contexte d'utilisation.
Le gain en terme de vitesse d'exécution est quand à lui plus aléatoire puisque très dépendant de l'application utilisée.
Cependant, les performances de PHP 5.4 sont suffisament en hausses à tout point de vue pour justifier une migration.
Il y a en effet tout à gagner, en terme de performances, à mettre en œuvre PHP 5.4 dès sa sortie, et plus particulièrement dans le cadre d'un développement piloté par les tests avec atoum, dans lequel les tests unitaires sont exécutés très souvent.
Le gain de productivité est en effet tout simplement énorme puisque grâce à PHP 5.4, les tests unitaires s'exécutent alors deux fois plus rapidement.
8 réactions
1 De Crash - 14/02/2012, 14:49
Salut,
Sur une application lourde en zend 1.X et doctrine 2 le gain sur différentes pages est de l ordre de 20 a 40%. Très loin d être négligeable donc. Je vais regarder plus attentivement la consommation de mémoire pour voir ce qu il en retourne.
Le cote performances est important mais le confort d utilisation de cette version pour le développeur semble aussi être plus que valide pour justifier la maj.
2 De Benoit - 14/02/2012, 14:58
Merci pour ce billet.
J'imagine que toutes les extensions de PHP resteront compatibles, n'est ce pas?
3 De François dambrine - 14/02/2012, 15:32
Salut,
dans le cadre de test d'une petite application que des amis et moi développons pour accélérer nos TP de math, nous testons avec atoum une structure fortement récursive. En terme de consommation mémoire je la divise par quatre par rapport à php5.3. Le temps d'exécution est lui plus variable, divisé souvent par deux, parfois par trois.
Quand on connaît le mal qu'avait pendant un certain temps avec la récursivité je pense qu'il y a eu pas mal d'améliorations de ce côté. Pour avoir suivi le SVN pendant un certain moment, il me semble qu'il a eu pas mal de bug corrigés de ce côté, ceci étant peut être la cause de cela.
4 De Manu - 14/02/2012, 15:34
Très bon article, comme d'habitude.
Il est clair que les gains apportés par cette version sont à eux seul un argument pour migrer vers PHP5.4. Il n'y a plus qu'à attendre la sortie de la version stable qui se fait un petit peu attendre :(.
"tout en consommant un peu plus de 30% de mémoire en moins." La phrase est un peu bizarre :P
Bonne continuation !
5 De neilime - 15/02/2012, 11:04
Vraiment hâte de pouvoir utiliser la version finale pour la production !
Merci pour l'article qui permet d'appuyer notre décision de changer de version PHP
"il peut se révéler de 15 à 50% plus rapide que PHP 5.3, et 15 à 40% moins gourmand en mémoire vive."
Est ce que des tests ont déjà été publiés, existe-t-il des statistiques de comparaisons entre la version 5.2 et 5.3 ?
6 De sunseb - 15/02/2012, 18:02
Suis déjà en prod. avec ! Je sais, c'est pas bien... Mais ça tourne et vite ! Et j'ai pas encore installé APC en plus...
7 De las92i - 17/02/2012, 14:11
Migrer en PHP 5.4 tout de suite pour les performances n'a d'intérêt que pour les petites sites car les gros sites ayant différents concepts de caches (varnish, memcache, apc...), tournant sur des dizaines de frontaux, l'intérêt est presque totalement nul puisque les soucis de performances sont en général tournés vers les gestionnaires de données et de flux en masse (MySQL/MongoDB/Gearman...).
L'intérêt de PHP 5.4 en premier lieu pour les gros développements est l'ouverture exceptionnelle des traits sur de nouveaux concepts de Design Pattern d'une efficacité redoutable (propreté/meilleurs contrôles...)... Soucis en revanche des traits c'est qu'ils seront probablement dans 95% du temps mal utilisés et pourrait devenir également les usines à gaz du futur... D'autres modifications apportent également des atouts intéressants sur des refontes éventuelles de conventions de codage (qui pourrait s'approcher de certains langages pour mobiles [soit des codes de plus en plus propres, Titanium pour n'en citer qu'un]).
Tout ça pour dire, que cet article dit vrai mais pour les développements de petites tailles... Normalement, les développements de sites de hauts trafics (certes moins de 1% des développeurs en PHP voire moins de 0,1%), la performances du PHP est juste une gloire mais n'aura aucun impact significatif (je parle à code égal).
8 De mageekguy - 18/02/2012, 23:01
@las92i : Je crois que tu as (entre autre chose) loupé le "Raison #1" dans le titre de mon billet...