Le développeur russe Dmitry Stogov, employé de Zend Technologies, une entreprise qui développe des applications basées sur le langage PHP, a passé les quatre derniers mois à travailler sur l’optimisation du moteur PHP. Et le travail semble en avoir valu la peine : les benchmarks montrent que la vitesse des sites basés sur WordPress a augmenté de 20%. Dans un scénario, l’amélioration des performances a dépassé 30 %.
Lors des tests, un serveur qui était capable de traiter 211 requêtes par seconde dans WordPress 3.6 avec une version antérieure de PHP prend désormais en charge 253 requêtes par seconde avec une version de développement de PHP 5.7, les changements étant déjà appliqués. Des améliorations similaires ont été constatées dans Drupal 6.1 (11,7 %), le script de la galerie d’images Qdig (15,3 %) et l’application de test Zend Framework (30,5 %).
Stogov a testé plusieurs optimisations dans le noyau de PHP. L’un d’entre eux consistait en un compilateur JIT intégré dans le cache PHP. Le code serait ainsi pré-interprété en mémoire, ce qui accélérerait l’exécution de l’application. La performance d’un script de référence s’est améliorée de plus de dix fois par rapport au PHP 5.5, mais l’impact sur les scénarios réels a été très faible.
L’autre idée, la plus responsable de l’augmentation des performances, était de minimiser l’allocation dans le tas, nom donné à une partie de la mémoire où sont stockées les données dynamiques. Le problème est que, pour ce faire, une bonne partie du code de PHP devait être modifiée et il n’y avait aucune garantie que l’amélioration serait grande ? mais l’idée a quand même été mise en pratique, et cela a très bien fonctionné.
Des optimisations sont disponibles dans une version préliminaire de PHP 5.7, surnommée PHPNG ou PHP de nouvelle génération. Si vous souhaitez tester la nouvelle version, vous pouvez lire les instructions sur cette page. On ne sait pas encore quand nous aurons cette augmentation des performances sur les serveurs : il y a encore des défauts qui génèrent une incompatibilité avec le code actuel, et certaines idées qui n’ont pas encore été testées peuvent améliorer encore plus les performances.