Maison > développement back-end > tutoriel php > PHP combat HHVM et ZEPHIR avec PHPNG

PHP combat HHVM et ZEPHIR avec PHPNG

William Shakespeare
Libérer: 2025-02-21 11:44:10
original
803 Les gens l'ont consulté

PHP Fights HHVM and Zephir with PHPNG

Points clés

  • PHPNG, une nouvelle branche de PHP, est en cours de développement et vise à optimiser considérablement PHP et à permettre des améliorations de performances supplémentaires dans l'utilisation future des compilateurs JIT. Ce n'est pas un compilateur JIT lui-même, mais une mise à niveau qui jette les bases de la construction d'un excellent compilateur JIT à l'avenir.
  • La mise à niveau
  • Ng se concentre sur la réécriture des parties centrales du moteur Zend pour une meilleure allocation de mémoire aux types de données PHP. Cela devrait améliorer les performances et permettre une API plus propre.
  • Bien que PHPNG promet la compatibilité avec les extensions existantes, toutes les extensions ne sont pas prises en charge et certains tests ont échoué. Ces problèmes de compatibilité peuvent poser des défis aux fournisseurs d'hébergement partagés lors de la mise à niveau.
  • L'adaptation lente de l'équipe de développement de PHP Core à changer peut signifier qu'au moment de la mise en œuvre du PHPNG, il ne peut fournir que des améliorations de performances et ne peut pas rivaliser avec Hack et HHVM, qui offrent déjà plus de fonctionnalités supplémentaires.

Cet article est parrainé par NewRelic. Merci pour votre soutien aux sponsors qui ont rendu le point de point possible! Les versions précédentes de l'article décrivent à tort PHPNG comme un compilateur JIT. Ce n'est pas le cas et les modifications nécessaires ont été achevées. Veuillez consulter le bas de l'article pour plus d'informations.


chaos dans l'ancien monde! Il y a quelques années, tout d'abord, HipHop, personne ne lui a prêté attention. Puis soudain, HHVM apparaît, Hack est présenté, et tout est en désordre - Facebook a créé un nouveau PHP et a tout cassé / a tout réparé (selon qui vous demandez). De plus, Zephir émerge et menace de compiler tout le code PHP au niveau C et prend en charge les extensions de PHP actuelles (bien que Zephir ne soit pas destiné à remplacer C ou PHP, il vous permet d'écrire du code de type PHP et de le compiler en C, ceci Vous permet de réécrire facilement toutes vos applications PHP dans un format qui peut être compilé pour une source fermée pour plus rapidement et plus de sécurité). Pour les temps de PHP alternatifs, c'est le moment de développer les champignons et HippyVM apparaît également.

Dans cette série de changements, une autre nouvelle voix est apparue: PHPNG.

Comme l'introduit Manuel Lemos, PHPNG est une nouvelle branche de PHP qui apparaîtra dans une future version de PHP qui n'a pas encore été déterminée.

attendez, quoi?

Le nom est un peu ringard (ng = nouvelle génération), et la version maladroite de PHP est une tentative de l'équipe principale d'optimiser considérablement PHP et de permettre de futures améliorations de performances à l'aide du compilateur JIT. PHPNG lui-même n'est pas un compilateur JIT, mais une mise à niveau qui jette les bases de la construction d'un excellent compilateur JIT à l'avenir. La branche PHPNG elle-même ne contient aucune fonctionnalité JIT.

PHPNG a été présenté par Dmitry Stogov dans un sujet de groupe de presse interne. Dmitry est responsable des performances et de l'optimisation de Zend, traitant principalement du moteur Zend. Les mises à niveau NG se concentrent sur la réécriture des parties centrales du moteur Zend pour une meilleure allocation de mémoire aux types de données PHP.

Extrait de Reddit:

ng existe parce que les expériences que Zend a effectuées lorsqu'elle a introduit le JIT a échoué dans le monde réel en raison de la conception actuelle du moteur, principalement parce que nous allouons tout tout le temps. Les correctifs NG ont changé la spécification, nous n'allouons donc plus ZVALS par défaut, ce qui améliore les performances et permet une API plus propre.

Comme pour toute tentative d'améliorer le PHP ", cette tentative a ses avantages et ses inconvénients.

pros

vitesse!

L'exécution plus rapide signifie une allocation de ressources plus rapide, un traitement de demande plus rapide et un débit de demande plus élevé. Les résultats préliminaires sont encourageants (1, 2).

La performance doit encore être comparée à d'autres alternatives, mais l'amélioration de 10 à 30% ne peut pas être sous-estimée.

Développez!

Étant donné que cette mise à niveau est effectuée sur le moteur Zend officiel, et non sur l'exécution, il garantit presque la compatibilité avec l'extension actuelle. L'une des principales raisons pour lesquelles les gens hésitent à migrer vers HHVM est que les extensions de base qu'ils sont utilisées pour utiliser ne sont pas disponibles (dans mon cas Phalcon). Personnellement, un moteur PHP plus rapide qui prend en charge Phalcon me rendra moins préoccupé par les mises à niveau que le hack offre aujourd'hui.

donc il garantit une compatibilité prolongée… et ainsi de suite. Ouais? Oh non.

Inconvénients

Développez!

incroyablement bon.

Toutes les extensions ne sont pas prises en charge, certains tests échouent et nous avons plus d'idées d'amélioration.

Pour être juste, Ng est encore très jeune. Beaucoup plus jeune que tout ce que nous avons traité dans le monde PHP et plus comme une mise à jour majeure - donc certains problèmes de compatibilité sont inévitables. Mais je suis d'accord avec Manuel que lorsque le temps de mise à niveau arrive, cela peut être un point de douleur pour la plupart des fournisseurs d'hébergement partagés.

Bien que je sois tout à fait contre les fournisseurs d'hébergement partagés, je comprends parfaitement les problèmes que cela peut apporter. Nous avions tous les deux une confusion similaire lorsque nous avons essayé d'amener les fournisseurs à «utiliser PHP5» et à la dernière fois où ils avaient besoin pour utiliser une version plus récente de PHP, donc les amener à faire un grand changement qui pourrait introduire les perturbations de la Colombie-Britannique serait une tâche intimidante.

Cette peur du changement consolidera l'utilisation des versions plus anciennes de PHP, qui à son tour se reproduira des développeurs de PHP plus extrêmement non qualifiés travaillant sur du code obsolète, ignorant complètement les meilleures pratiques et les vulnérabilités. Bref, nous répéterons l'histoire. Cela peut ressembler à la fin du monde, comme certains l'ont souligné, mais je suis profondément impliqué dans tous les domaines de PHP tous les jours et atteignant les zones de qualité la plus basse avec une boîte de réception complète, je vois ce que nous sommes maintenant employés et où nous irons. Cependant, tout n'est pas sombre - des solutions comme Heroku et DigitalOcean permettra aux gens d'exécuter les versions les plus récentes et personnalisées de PHP à un prix inférieur à (ou égal à) des fournisseurs d'hébergement partagés.

Mon espoir le plus sincère est que l'équipe principale sera en mesure de perfectionner le nouveau moteur Zend à un niveau qui reste en arrière compatible avec toutes les extensions, mais émettra des avertissements de compilation à tous les développeurs d'extension qui ne respectent pas les spécifications NG et les meilleures pratiques et les meilleures pratiques .

Slow en interne

L'équipe de développement de base est connue pour s'adapter à des changements lents. Les fonctionnalités modernes qui existaient dans d'autres langues pendant de nombreuses années ont été rejetées dans le passé et n'ont été mises en œuvre que quelques années plus tard.

si cela est dû à un manque de vision pour l'équipe de développement de base, comme le dit Anthony et Phil, ou parce qu'il est trop petit et sous-financé pour apporter rapidement des changements majeurs, cela n'a pas d'import Ne pourrez jamais voir NG en public et se débarrasser de l'état «alpha», comme c'est le cas avec le mystérieux PHP6.

Cela nous rappelle le dernier point.

rester à nouveau derrière

En raison de la lenteur inhérente souvent observée dans les équipes de développement de PHP Core, elle ne fournira des mises à niveau des performances que lorsque NG est implémenté (s'il est réellement implémenté). D'ici là, Hack et HHVM (bien plus que PHP standard) offrira de nombreuses fonctionnalités supplémentaires que les matchs seront manipulés et PHP n'aura aucune chance de gagner.

Les invites de type disponibles aujourd'hui dans Hack et Zephir prendront racine dans ces implémentations. Serveur Web multithread, compilé et autonome - toutes ces fonctionnalités sont disponibles dans des solutions alternatives aujourd'hui, et ils sont presque tous prêts à être en production. Bien que l'équipe de développement de base travaille sur certaines de ces fonctionnalités, et PHP peut avoir un support IIS avant HHVM (ce qui est évidemment important pour certains), je pense personnellement que ce n'est pas assez rapide pour le côté officiel de la progression du PHP.

Même si l'équipe principale décide de voter pour "oui" sur toutes ces fonctionnalités spéciales qui ont des problèmes et des besoins, il leur faudra trop de temps pour mettre en œuvre - et ils seront en retard à moins que le changement de paradigme ne soit introduit et Leur intégralité a changé comment travailler. Déplacer le code source vers GitHub est un bon mouvement, mais il touche simplement la surface.

En d'autres termes, Rasmus lui-même pense que HHVM est devenu le moteur principal de PHP dans quelques années n'est pas un scénario de science-fiction.

Conclusion

Laissant la propriété liée à Facebook (qui a de nombreuses implications négatives en soi), HHVM pousse les développeurs dans la bonne direction en montrant comment de telles mises à niveau peuvent être apportées. Cela stimule l'innovation et force ceux qui se contentent depuis longtemps de leur trône pour se lever et étirer leurs jambes pour voir si elles peuvent encore courir. L'agressivité de Facebook a forcé le monde PHP à revisiter et à réfléchir à ce qui se passe, et il est rapidement devenu populaire.

La compétition est géniale. Je me sens optimiste partout où cela nous amène.

28 mai 2014 Mise à jour de l'article

Après avoir eu un e-mail avec Phil Sturgeon et après avoir lu la déclaration officielle, j'ai édité une partie du texte ci-dessus. En bref, je classe PHPNG comme JIT, ce qui n'est évidemment pas, mais juste une mise à niveau des performances, ce qui permettra à l'équipe principale de développer un compilateur JIT approprié plus tard.

Les questions fréquemment posées sur PHP, HHVM, ZEPHIR et PHPNG

Quelle est la principale différence entre PHP et Zephir?

PHP et Zephir sont tous deux des langages de script pour le développement Web. PHP est une langue open source largement utilisée, tandis que Zephir est une langue de haut niveau qui permet aux développeurs d'écrire des extensions pour PHP. Zephir fournit une syntaxe typique statique, qui aide à prévenir les erreurs possibles en PHP. Cependant, PHP possède une communauté plus large et plus de ressources disponibles, ce qui peut être bénéfique pour les développeurs.

Comment comparer HHVM avec PHPNG?

HHVM (HIPHOP Virtual Machine) et PHPNG (PHP New Generation) sont tous deux des moteurs pour exécuter du code PHP. HHVM est développé par Facebook et utilise une méthode de compilation instantanée (JIT) pour obtenir d'excellentes performances. D'un autre côté, PHPNG est un projet interne de PHP qui vise à améliorer les performances des applications PHP. Il le fait en modifiant la façon dont PHP représente les valeurs et les objets en interne, entraînant des améliorations d'utilisation de la mémoire significatives.

ZEPHIR est-il toujours sous maintenance?

Zephir n'est plus activement maintenu selon les mises à jour récentes. Cela signifie que même si la langue est toujours disponible, elle peut ne pas recevoir de mises à jour ou de correction pour tout problème potentiel qui peut survenir.

Quels sont les avantages de l'utilisation de Zephir?

Zephir offre aux développeurs de nombreux avantages. Il fournit une syntaxe typtée statique, qui aide à prévenir les erreurs. Il permet également aux développeurs d'écrire des extensions pour PHP, fournissant ainsi un moyen d'améliorer les performances des applications PHP.

Pourquoi créer Zephir?

Le but de la création de Zephir est de fournir un langage de haut niveau qui permet aux développeurs d'écrire des extensions pour PHP. L'objectif est d'améliorer les performances des applications PHP en permettant aux développeurs d'écrire des pièces de code critiques dans des langues qui sont plus faciles à optimiser et à gérer.

Comment PHPNG améliore-t-il les performances des applications PHP?

PHPNG améliore les performances des applications PHP en modifiant la façon dont PHP représente les valeurs et les objets en interne. Cela conduit à des améliorations significatives d'utilisation de la mémoire et peut conduire à un temps d'exécution plus rapide pour les applications PHP.

Avec l'avènement de HHVM et Zephir, quel est l'avenir de PHP?

Malgré l'émergence de HHVM et Zephir, PHP est toujours un langage de développement Web largement utilisé. Alors que HHVM et Zephir fournissent des améliorations des performances, PHP a une énorme communauté et des ressources abondantes disponibles. L'avenir de PHP semble prometteur et travaille constamment à améliorer ses performances et ses capacités.

Puis-je utiliser Zephir pour écrire des extensions de PHP?

Oui, l'un des principaux avantages de Zephir est qu'il permet aux développeurs d'écrire des extensions pour PHP. Cela peut être un moyen d'améliorer les performances de votre application PHP.

Quelle est la différence entre le langage de script et la langue de haut niveau?

Le langage de script est un langage de programmation utilisé pour automatiser des tâches qui auraient été effectuées étape par étape par étape par étape par les opérateurs humains. D'un autre côté, un langage de haut niveau est un langage de programmation qui a une forte abstraction avec les détails de l'ordinateur, ce qui facilite la lecture et l'écriture.

Comment la méthode de compilation instantanée (JIT) de HHVM améliore-t-elle les performances?

La méthode de compilation instantanée (JIT) de HHVM améliore les performances en compilant des bytecodes en code machine avant l'exécution. Cela permet l'optimisation et peut augmenter considérablement la vitesse d'exécution des applications PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal