Facebook invente une machine virtuelle PHP

Le géant des réseaux sociaux Facebook a franchi une nouvelle étape pour rendre le langage de programmation PHP Web plus rapide. La société a développé une machine virtuelle PHP qui, selon elle, peut exécuter le langage jusqu'à neuf fois plus rapidement que l'exécution native de PHP sur de grands systèmes.

«Notre objectif est de faire fonctionner PHP vraiment, très rapidement», a déclaré Joel Pobar, responsable de l'ingénierie sur Facebook. Facebook utilise la machine virtuelle, appelée HHVM (HipHop Virtual Machine), sur tous ses serveurs depuis le début de l'année.

[Apprenez à travailler plus intelligemment, pas plus dur avec le tour d'horizon de tous les conseils et tendances que les programmeurs doivent connaître dans le Guide de survie des développeurs. Téléchargez le PDF dès aujourd'hui! | Tenez-vous au courant des dernières actualités des développeurs grâce à la newsletter Developer World. ]

Pobar a discuté de la machine virtuelle à OSCON (O'Reilly Open Source Conference) qui se tient cette semaine à Portland, Oregon.

HHVM n'est pas la première incursion de Facebook dans la personnalisation de PHP pour une utilisation plus rapide. PHP est un langage interprété, ce qui signifie que le code source est exécuté directement par le processeur. De manière générale, les programmes écrits dans des langages interprétés tels que PHP ont tendance à ne pas s'exécuter aussi rapidement que les langages, tels que C ou C ++, qui ont été compilés au préalable en code octet en langage machine. Facebook est resté fidèle à PHP car il est largement compris par de nombreux programmeurs Web qui travaillent pour l'entreprise.

Cependant, pour répondre à la demande insatiable des utilisateurs, Facebook a initialement conçu un compilateur, appelé HipHop, qui traduirait le code PHP en C ++, afin qu'il puisse ensuite être compilé à l'avance pour des performances plus rapides.

Alors que Facebook a bénéficié de gains de performances considérables de cette première version de HipHop pendant plusieurs années, il a cherché d'autres moyens d'accélérer la livraison des pages Web créées dynamiquement à son milliard d'utilisateurs. "Notre stratégie de performance pour cela allait être exploitée", a admis Pobar.

HHVM est la prochaine étape pour Facebook. En cours de développement depuis environ trois ans, HHVM fonctionne en fait sur le même principe que la JVM (Java Virtual Machine). HHVM a un compilateur JIT (juste à temps) qui convertit le code source lisible par l'homme en code d'octet lisible par machine lorsque cela est nécessaire. (L'ancien HipHop, renommé HPHPc, a maintenant été retiré de Facebook.)

Cette approche JIT permet à la machine virtuelle de "prendre des décisions plus intelligentes lors de l'exécution", a déclaré Pobar. Par exemple, si un appel est fait à la base de données MySQL pour lire une ligne de données, le HHVM peut, à la volée, déterminer de quel type de données il s'agit, comme un entier ou une chaîne. Il peut alors générer ou appeler le code à la volée qui serait le mieux adapté pour traiter ce type particulier de données.

Avec l'ancien HipHop, «le mieux qu'il puisse faire est d'analyser l'intégralité de la base de code de Facebook, de raisonner à son sujet, puis de spécialiser le code en fonction de son raisonnement. Mais il ne peut pas obtenir tout le raisonnement correctement. vous ne pouvez pas simplement en déduire ou en raisonner », a déclaré Pobar.

Pobar a estimé que HHVM est environ deux fois plus rapide que HPHPc et environ neuf fois plus rapide que l'exécution de PHP pur.

Facebook a publié le code de HHVM sur GitHub, dans l'espoir que d'autres l'utiliseront également pour accélérer leurs sites Web PHP.

HHVM est optimisé pour la gestion de bases de code PHP très volumineuses et très utilisées. Pobar a estimé que l'utilisation de HHVM pour des sites Web de taille standard, comme celui hébergeant un blog Wordpress, ne gagnerait qu'environ cinq fois plus de performances.

«Si vous prenez du PHP et que vous l'exécutez sur HipHop, le temps d'exécution du processeur [peut] ne pas être le facteur limitant pour les performances. Il y a de fortes chances que [le système] passe trop de temps à parler à la base de données ou à parler à [ la couche de mise en cache] memcache », a déclaré Pobar.

Joab Jackson couvre l'actualité des logiciels d'entreprise et des technologies générales pour The News Service . Suivez Joab sur Twitter à @Joab_Jackson. L'adresse e-mail de Joab est [email protected]