PHP 7 : la nouvelle version de PHP au crible

PHP 7 Quelles sont les principales évolutions de la nouvelle version du langage de script serveur ? Quel apport en termes de performance ? Le dossier de la rédaction sur PHP 7.

La version finale de PHP 7 est sortie en décembre 2015 (lire l'annonce officielle sur php.net). Elle est livrée avec une nouvelle version du Zend Engine. Un manuel de migration a été publié par le site du projet open source.

Le projet PHP vient par ailleurs de livrer PHP 7.0.11 - qui corrige plusieurs bugs de sécurité. La Release Candidate 1 de PHP 7.1 est aussi disponible. PHP 7.1 a pour but d'introduire quelques éléments complémentaires à PHP 7 : le support des Server Push via curl HTTP/2 et des types nullables par exemple (voir la liste complète des évolutions sur le site du projet PHP). Les performances du langage doivent aussi être optimisées pour l'occasion.

 Quid de la performance de PHP 7

"PHP 7 est plus rapide." C'est la principale promesse faite par Zend et les contributeurs principaux du projet PHP. Cette nouvelle version est basée sur PHPNG (pour PHP Next-Generation). Une initiative qui a été lancée par Zend en réponse à la technologie HHVM de Facebook, qui avait pour but de proposer une version de PHP qui se voulait plus performante.

Selon Zend, la mise à jour des applications vers PHP 7 pourrait engendrer un surcroît de performance de 25% à 70%. L'éditeur a publié quelques indicateurs qu'il a résumé en une infographie publiée en mai 2015. Ces comparatifs montrent que WordPress (en version 4.1) serait deux fois plus rapide avec PHP 7 qu'avec PHP 5.6, et Drupal (7) 70% plus rapide. A travers son benchmark, le projet PHP met aussi en avant un niveau d'optimisation qui se veut être au même niveau que celui de HHVM, voire légèrement au dessus (cf. infographie ci-dessous).

benchmark php 7
Etudes de performance de PHP 7. © Zend

  Premier Benchmark du JDN

Selon les premiers comparatifs réalisés par CCM Benchmark, l'éditeur du JDN, les gains (entre PHP 5.6 et PHP 7) peuvent atteindre 50% en temps d'exécution CPU, et près de 50% également en consommation de mémoire. "C'est au-dessus de ce que nous avions anticipé. Je n'ai jamais vu un tel différentiel de performance lors des précédentes montées de version", note Xavier Leune, responsable Framework PHP chez CCM Benchmark (lire l'article : PHP 7 vs PHP 5.6, le comparatif de performance du JDN).

10186637
Comparatif de performance entre PHP 5.6 et PHP 7, réalisé par CCM Benchmark (éditeur du JDN) sur la page d'accueil de JDN Développeur. Résultats : -46% en consommation de mémoire, et -44% de temps d'exécution CPU ©  CCM Benchmark

  Les nouveautés de PHP 7

Zend avait diffusé en mars dernier une infographie qui présentait quelques évolutions de PHP 7. Elle mentionnait les Spaceships qui font apparaitre un nouvel opérateur de comparaison <=>. Il pourra être utilisé pour combiner des comparaisons (un décryptage en français ici).

Autre évolution évoquée, les Return Type Declarations & Scalar Type Hints permettent de déclarer (de manière optionnelle) un type de retour pour les fonctions et méthodes. Les Type Hinst comme cette nouvelle déclaration peuvent en outre prendre en charge les types scalaires (pour préciser le retour attendu en matière de nombre ou chaîne de caractères). "C'est très intéressant. Cela va contribuer à simplifier la gestion de la cohérence des entrées et sorties", commente Xavier Leune.

  Pourquoi PHP est-il passé de la version 5 à la version 7 ? 

En juillet 2014, les contributeurs du projet PHP se sont prononcés sur un passage direct de PHP 5.x à PHP 7.x (voir le wiki du projet). En fait, PHP 6 a bien existé, mais il est resté à l'état de chantier. Cette version devait conduire à l'intégration de l'Unicode au langage (en vue de faciliter la manipulation de texte dans différentes langues). Mais face aux trop nombreuses difficultés techniques, l'initiative a été abandonnée. Les autres évolutions envisagées dans PHP 6 ont depuis été réintégrées à de nouvelles versions intermédiaires (PHP 5.3 et 5.4). C'est pour éviter la confusion qu'est née alors cette idée de passer directement à la version 7.

Enfin pour les partisans de PHP 7, le chiffre 6 a aussi trop souvent été associé à la notion d'échec dans le monde des environnements de développement web : "PHP 6 a été un échec ; Perl 6 a été un échec. Il est en fait associé à l'échec, même en dehors du monde des langages dynamiques : MySQL 6 existait, mais n'a jamais été publié."
 

A lire aussi :

PHP 7 vs PHP 5.6 : le comparatif de performance du JDN
 PHP fête ses 20 ans

Zend / Infographie