Developpez.com

Le Club des Développeurs et IT Pro

Un refactoring de PHP 5.5 améliore ses performances de 10 à 30%

Wordpress 3.6 gagne 20% en termes de vitesse d'exécution

Le 2014-05-08 16:04:27, par Arsene Newman, Expert éminent sénior
Dimitry Stogov, ingénieur chez Zend Technologies, société dont le moteur de script du même nom est le moteur interne de PHP, vient d’annoncer une optimisation des performances de PHP 5.5, après un travail acharné de plus de quatre mois.

Après avoir dûment analysé les cycles CPU d’une application PHP qui se répartissent comme suit : 20% du temps CPU pour la gestion de la mémoire, 10% pour les opérations relatives aux tables de hachages, 30% pour les fonctions internes et enfin 30% pour la VM, Stogov décide de s’attaquer à l’optimisation de la VM, en appliquant des technologies JIT. Toutefois, cela n’améliore pas grandement les performances. Alors, une seconde approche a été décidée, plus radicale et plus difficile : faire un refactoring du moteur PHP.

Le refactoring en question touche la représentation mémoire de certaines variables sous le moteur PHP (moteur Zend), en passant d’une représentation basée principalement sur des pointeurs et des références à une représentation sous forme de données structurées, ce qui a permis une amélioration conséquente des performances du moteur PHP, de l’ordre de 10 à 30% en termes de vitesse d’exécution.

Preuve en est, Stogov s’est lancé dans différents benchmarks de certains programmes utilisant PHP comme Wordpress 3.6 et Drupal 6.1. Ces derniers ont alors affiché une amélioration des performances de 20% et 11.7% respectivement.

Tout cela s’annonce donc de bons augures pour les performances des programmes basés sur PHP, même si le gain obtenu grâce à ce refactoring diffère sensiblement d’un programme à un autre.

Enfin, Stogov a annoncé que d’autres améliorations sont à prévoir. Certaines sont encore à l’étude ou n’ont pas encore passé les tests0. Son travail devrait donc aboutir à de meilleurs résultats.

Source : Annonce de Stogov, Détails techniques sur le refactoring

Et vous ?

Qu’en pensez-vous ?
  Discussion forum
20 commentaires
  • Celira
    Modératrice
    Il ne faut pas confondre :
    • Zend Technologies (la société)
    • Zend Framework (le framework PHP développé par la société)
    • Zend Server (le serveur d'application PHP développé par la société)
    • Zend Engine (le moteur de script qui fait tourner PHP)


    Le problème c'est que la plupart des gens disent "Zend" pour n'importe lequel (le plus souvent pour ZF). Du coup, on s'emmêle facilement
  • Shuty
    Membre éprouvé
    Envoyé par rthomas
    .NET fait cela depuis ... le début
    J'en connais un qui cherche la bagarre...

    Zend que je connais seulement à travers son framework ZF2 est une entreprise à forte valeur. Je ne vois pas pourquoi nous ne pourrions pas leurs faire confiance.
  • redcurve
    Membre extrêmement actif
    Envoyé par rthomas
    .NET fait cela depuis ... le début
    Il est vrai que les refactoring voir refonte complète de parties de la CLR est assez courant en dotnet
  • Tsilefy
    Membre émérite
    PHP 6 est un objectif mythique qui n'arrivera pas de sitôt mais tout ce qu'on attendait de PHP 6 (sauf unicode en natif) est déjà présent dans les versions actuelles. Je me demande même s'ils ne feraient pas mieux de passer directement à PHP 7 et d'oublier PHP 6 pour de bon (car ce nom est déjà souillé).
  • Tsilefy
    Membre émérite
    J'en pense que certains doivent sentir le souffle fétide de Hack dans leur nuque :-)

    Zend cherche à positionner PHP comme une solution entreprise viable depuis des années, et à se positionner comme étant l'acteur majeur de ce marché. L'arrivée de Facebook et ses gros sabots les fait réagir, vive la concurrence!

    Toute amélioration de l'implémentation est bonne à prendre, mais il est à noter que pour l'instant rien ne garantit que cette nouvelle version du moteur fasse un jour partie de PHP. C'est "juste" une contribution qui fera l'objet d'un RFC comme les autres.
  • Zefling
    Expert confirmé
    Je suis curieux de voir ce que ça peut donner sur mon framework. 10-20 % ça sera toujours ça de pris.
  • Gruik
    Membre expérimenté
    J'aimerais bien connaître le gain de performance sur Magento
  • negstek
    Membre confirmé
    Envoyé par Celira
    Il ne faut pas confondre :
    • Zend Technologies (la société)
    • Zend Framework (le framework PHP développé par la société)
    • Zend Server (le serveur d'application PHP développé par la société)
    • Zend Engine (le moteur de script qui fait tourner PHP)


    Le problème c'est que la plupart des gens disent "Zend" pour n'importe lequel (le plus souvent pour ZF). Du coup, on s'emmêle facilement
    Je me coucherais moins bête ce soir, merci pour le complément d'information.
  • JEDI_BC
    Membre à l'essai
    Il n'y a rien d'officialisé du tout. Il n'y a eut aucune RFC de proposée pour l'instant pour intégrer ces modifications au core de PHP.
    Ces modifications font même débat sur la liste Internals des core devs.

    Le post "PHP Next Generation" d'hier sur la front page de PHP lui même fait clairement débat.
    Certains y voit une tentative de passage en force du patch par Zend (la société) pour reprendre la main sur le dev du core qu'ils avaient abandonné depuis un moment. Libre à chacun d'en tirer ses conclusions.
  • Gasprod
    Membre à l'essai
    tout à fait d'accord. le futur de PhP serait Wordpress ... Drupal ... et surtout Zend ? ... pas sur