IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

« PHP Next Generation » : le noyau de la prochaine génération de PHP officialisé
Le projet vise à intégrer un compilateur JIT

Le , par Hinault Romaric

65PARTAGES

0  0 
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

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 ?
Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de JEDI_BC
Membre à l'essai https://www.developpez.com
Le 28/05/2014 à 15:31
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.
0  0 
Avatar de Gasprod
Membre à l'essai https://www.developpez.com
Le 28/05/2014 à 15:44
tout à fait d'accord. le futur de PhP serait Wordpress ... Drupal ... et surtout Zend ? ... pas sur
0  0 
Avatar de dorian53
Membre habitué https://www.developpez.com
Le 28/05/2014 à 16:00
1/ Quelles différences entre une compilation JIT et les systèmes de cache tels que APC ou OPCache ?

2/ Quelles sont les raisons d'être contre une compilation JIT ?
0  0 
Avatar de OPi
Membre actif https://www.developpez.com
Le 28/05/2014 à 16:32
Citation Envoyé par dorian53 Voir le message
1/ Quelles différences entre une compilation JIT et les systèmes de cache tels que APC ou OPCache ?
Les systèmes de cache stockent le bytecode (code intermédiaire résultat de la compilation du source PHP) pour être réutilisé d'une exécution à l'autre.

Les compilateurs JIT compilent (à la volée, lors de l'exécution du programme) le bytecode en code natif (donc propre à la plate-forme utilisée) qui peut ainsi être exécuté plusieurs fois (dans une boucle par exemple) lors d'une seule exécution du programme.
0  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 28/05/2014 à 20:39
Citation Envoyé par dorian53 Voir le message
2/ Quelles sont les raisons d'être contre une compilation JIT ?
Jusqu'à preuve du contraire, il n'y en a pas (Java, C# utilisent des compilateurs JIT, et affichent de très bonnes performances).
Un inconvénient par contre, pourrait-être la consommation mémoire. Mais là encore, aujourd'hui la RAM n'est pas un composant très couteux.

Par contre il y a quelque chose que je ne comprends pas dans cette article ! Il me semble que la technologie PHP possède déjà un compilateur JIT pour faire de la compilation à la volée (qui agit à chaque chargement de page PHP, puis si APC est activé stockage dans un cache).
L'objectif ne serait-t-il pas plutôt de mettre en place une machine virtuelle PHP ?
0  0 
Avatar de Lynix
Membre habitué https://www.developpez.com
Le 29/05/2014 à 9:47
Citation Envoyé par Gugelhupf Voir le message
Par contre il y a quelque chose que je ne comprends pas dans cette article ! Il me semble que la technologie PHP possède déjà un compilateur JIT pour faire de la compilation à la volée (qui agit à chaque chargement de page PHP, puis si APC est activé stockage dans un cache).
L'objectif ne serait-t-il pas plutôt de mettre en place une machine virtuelle PHP ?
Justement non, le PHP est bel et bien compilé à la volée mais en bytecode (Comme beaucoup d'autres langages interprétés comme le Lua), c'est une étape coûteuse mais nécessaire qui accélère le traitement par la suite (L'interpréteur n'a plus qu'à se préoccuper d'une série de bytecode qu'il sait déjà syntaxiquement valide).
Ce que les systèmes de cache comme APC font, c'est de stocker ce bytecode, évitant la compilation à chaque exécution et accélérant le chargement de la page

En revanche, un compilateur JIT c'est vraiment tout autre chose, j'espère juste qu'ils vont avoir la sagesse de stocker la sortie du compilateur, parce que sinon avec un langage comme PHP dont les scripts sont lancés et relancés sans cesse, ça ne servira pas à grand chose.
0  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 30/05/2014 à 20:29
Un 1er problème en PHP, c'est qu'il n'y a pas d'API pour gérer les threads, et de machine virtuelle.
Un 2ème problème, c'est que le bytecode produit n'est pas multiplateforme...
Ce sont là 2 ingrédients clés pour avoir un compilateur JIT. Mais je ne sais pas s'ils iront jusque là (je pense aux hébergeurs).
Et quand on y pense, PHP suit encore plus le modèle des plateformes Java et .NET
0  0 
Avatar de Shuty
Membre éprouvé https://www.developpez.com
Le 02/06/2014 à 17:42
Zend est sur tous les front depuis que la concurrence s'est endurcie avec l'arrivé de Symfony dans sa version 2.
0  0