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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

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


Sujet :

Langage PHP

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 283
    Points : 18 071
    Points
    18 071
    Par défaut Un refactoring de PHP 5.5 améliore ses performances de 10 à 30%
    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 ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    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.

  3. #3
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 168
    Points : 4 654
    Points
    4 654
    Par défaut
    Je suis curieux de voir ce que ça peut donner sur mon framework. 10-20 % ça sera toujours ça de pris.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 45
    Points : 65
    Points
    65
    Par défaut
    .NET fait cela depuis ... le début

  5. #5
    Membre éprouvé Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Points : 1 174
    Points
    1 174
    Par défaut
    Citation Envoyé par rthomas Voir le message
    .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.
    Agence web Dim'Solution, créateur de solutions numériques
    Sites internet, ecommerce, logiciels, applications mobiles, référencement (SEO), plugin Prestashop, Magento, WordPress, Joomla!...

    Cours de trading gratuit | Envoyer des sms gratuitement | Envoyer des fax gratuitement | Plateforme de Fax à l'international

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    794
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 794
    Points : 987
    Points
    987
    Par défaut
    Citation Envoyé par rthomas Voir le message
    .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

  7. #7
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 487
    Points : 6 030
    Points
    6 030
    Par défaut
    Oui oui mais bon, des performances qui vont pas forcément se ressentir. Au lieu de ******* les mouches, ils devraient consacrer leur temps à PHP6.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    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é).

  9. #9
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    J'aimerais bien connaître le gain de performance sur Magento

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 354
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par Arsene Newman Voir le message
    Dimitry Stogov, ingénieur chez Zend Technologies, société dont le moteur de script du même nom est le moteur interne de PHP
    je savais pas que Zend était le moteur interne de PHP, j'ai toujours cru qu'il s'agissait en fait d'un framework PHP... Paies ta news

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    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
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 354
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par Celira Voir le message
    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.

  13. #13
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    « PHP Next Generation » : le noyau de la prochaine génération de PHP officialisé
    Le projet vise à intégrer un compilateur JIT

    Il y a quelques jours, Dimitry Stogov, ingénieur chez Zend Technologies, dévoilait les résultats de ses travaux qui permettaient une optimisation des performances de PHP.

    Celui-ci avait procédé à un refactoring du code PHP, avec à la clé une augmentation des performances d’applications comme Wordpress 3.6 de 20% et Drupal 6.1 de 11,7%.

    Le projet avait pris naissance depuis plusieurs années sous l’appellation de « PHP Next Generation » et avait entraîné la création d’une branche séparée de PHP baptisée « phpng », qui était maintenue par trois développeurs (Dmitry Stogov, Xinchen Hui et Nikita Popov).

    Ce projet interne qui avait été tenu secret a atteint un stade assez avancé permettant son officialisation par les développeurs de PHP. PHP Next Generation vise à créer le noyau de la prochaine génération de la plateforme de développement Web, en procédant à une refonte, l’optimisation et le nettoyage du code de base de PHP pour le rendre plus efficace et permettre d’avoir recours à un compilateur JIT (Just in time).

    Ainsi, le but initial de phpng n’a pas été l’intégration des capacités JIT, mais plutôt de résoudre les problèmes qui pourraient être un frein à une mise en œuvre future d’un compilateur JIT fournissant des performances optimales.

    Sans même inclure des technologies JIT, le refactoring du code PHP présente déjà des résultats très intéressants et désormais, l’équipe du projet peut se pencher sur le support d’un compilateur JIT. « Le travail sur phpng a été une source d’inspiration et nous sommes très optimistes. Mais, il faut garder les pieds sur terre, rester honnête et dire qu’il y a encore beaucoup de travail à faire pour rendre ‘Next Generation’ une réalité. Ce n’est que le début », conclut l’équipe de PHP dans un billet sur le site du projet.

    Actuellement, phpng n’est donc pas une branche de production que tout le monde devrait déployer. Mais les plus curieux peuvent déjà installer et tester cette branche, qui sera la base du « futur PHP ».

    Découvrir et tester phpng

    Source : Site du projet


    Et vous ?

    Qu'en pensez-vous ?
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    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.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    tout à fait d'accord. le futur de PhP serait Wordpress ... Drupal ... et surtout Zend ? ... pas sur

  16. #16
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    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 ?

  17. #17
    OPi
    OPi est déconnecté
    Membre actif
    Avatar de OPi
    Homme Profil pro
    en recherche d'emploi
    Inscrit en
    Août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : en recherche d'emploi
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 74
    Points : 245
    Points
    245
    Par défaut
    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.
    DragonSoft DS (informatique) — Johnny Five JF (textes) — Olivier Pirson OPi (mathématiques)
    OPiCitationshttps://bitbucket.org/OPiMedia

  18. #18
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    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 ?
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  19. #19
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    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.

  20. #20
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    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
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/05/2010, 17h44
  2. Encore des améliorations de performances pour PHP futur
    Par Invité dans le forum Actualités
    Réponses: 0
    Dernier message: 21/05/2010, 20h07
  3. Refactoring en PHP
    Par dorian53 dans le forum NetBeans
    Réponses: 2
    Dernier message: 15/05/2009, 15h22
  4. Réponses: 1
    Dernier message: 14/03/2008, 20h59
  5. [PHP-JS] Comment organiser ses pages pour un gros site?
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 4
    Dernier message: 09/02/2007, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo