Facebook vient de publier un outil qui risque de faire parler de lui dans la communauté des développeurs Web. Il s’agit d’HipHop, qui a pour but final d’accélérer le rendu des pages qui utilisent le langage PHP.
Comme l’explique Haiping Zhao, développeur chez Facebook, HipHop n’est pas à proprement parler un compilateur. Il faut le considérer comme un outil qui va transformer le code PHP en C++. Ensuite, ce dernier est compilé avec G++, le compilateur dédié au C++ faisant partie du célèbre GCC. La transformation du code se fait de manière sémantique mais peut sacrifier au passage quelques fonctionnalités « rarement utilisées », comme eval(), au profit de performances supplémentaires.
Le code C++ généré par HipHop est décrit comme « hautement optimisé » pour permettre d’accélérer le rendu des pages, tout en diminuant autant que possible l’utilisation des ressources processeurs ainsi que de la mémoire vive. Selon Facebook, l’utilisation d’HipHop aurait permis de réduire de 50 % l’utilisation CPU sur l’ensemble du service.
HipHop contient un outil de transformation du code, une nouvelle implémentation du runtime PHP ainsi qu’une réécriture de la plupart des Extensions PHP pour qu’elles puissent tirer parti des optimisations faites en amont.
HipHop est maintenant publié en version bêta open source. Il est à noter que toutes les modifications apportées à PHP ont été reportées vers le projet PHP pour en partager les bénéfices. Les développeurs qui souhaitent en savoir davantage peuvent consulter le billet complet publié sur le blog de Facebook (en anglais).
Comme l’explique Haiping Zhao, développeur chez Facebook, HipHop n’est pas à proprement parler un compilateur. Il faut le considérer comme un outil qui va transformer le code PHP en C++. Ensuite, ce dernier est compilé avec G++, le compilateur dédié au C++ faisant partie du célèbre GCC. La transformation du code se fait de manière sémantique mais peut sacrifier au passage quelques fonctionnalités « rarement utilisées », comme eval(), au profit de performances supplémentaires.
Le code C++ généré par HipHop est décrit comme « hautement optimisé » pour permettre d’accélérer le rendu des pages, tout en diminuant autant que possible l’utilisation des ressources processeurs ainsi que de la mémoire vive. Selon Facebook, l’utilisation d’HipHop aurait permis de réduire de 50 % l’utilisation CPU sur l’ensemble du service.
HipHop contient un outil de transformation du code, une nouvelle implémentation du runtime PHP ainsi qu’une réécriture de la plupart des Extensions PHP pour qu’elles puissent tirer parti des optimisations faites en amont.
HipHop est maintenant publié en version bêta open source. Il est à noter que toutes les modifications apportées à PHP ont été reportées vers le projet PHP pour en partager les bénéfices. Les développeurs qui souhaitent en savoir davantage peuvent consulter le billet complet publié sur le blog de Facebook (en anglais).
Source :
Facebook
Vincent Hermann
Rédacteur/journaliste spécialisé dans le logiciel et en particulier les systèmes d'exploitation. Ne se déplace jamais sans son épée.
Le 3 février 2010 à 11:00
(30 330
lectures)
Il y a 133 commentaires
Ils se sont inspiré des frères pétard pour le nom ?
gordontesos
Le mercredi 3 février 2010 à 11:50:11
#32
Inscrit
le vendredi 2 octobre 09
-
78
commentaires
gné ?
Déjà Google a choisi Python, un langage qui s'exécute vite et se compile facilment. Et puis bon, le jour ou facebook aura la meme archi que Google (BigTable et autre MapReduce) et la meme infrastructure (million de serveurs), je pense qu'ils n'auront pas trop besoin d'écrire un cross-compilateur PHP/C++.
Ce que je voulais dire, c'est que, pour des besoins de performances, Google n'a pas choisi du php interprété, mais a fait le choix de compiler son code;
C'est pas comme ci Zend avait un mecanisme de cache du code "pre-compilé" de dispo :http://www.zend.com/fr/products/platform/#topapp
gordontesos
Le mercredi 3 février 2010 à 11:52:27
#34
Inscrit
le vendredi 2 octobre 09
-
78
commentaires
C'est pas comme ci Zend avait un mecanisme de cache du code "pre-compilé" de dispo :http://www.zend.com/fr/products/platform/#topapp
Non, il s'agit de cache opcode, qui est tout de même interprété. Là, on parle de conversion en C++, puis de compilation en code natif.
Et c'est quoi la différence fondamentale avec des outils comme Bambalam ?
PhenXDesign
Le mercredi 3 février 2010 à 11:53:39
#36
Inscrit
le samedi 24 janvier 04
-
166
commentaires
Je comprends pas pourquoi ils ont réinventé la roue
http://www.brandonturner.net/blog/2009/07/fastcgi_php_opcode_cache_benchmarks/
Je sais que c'est pas exactement pareil, mais au final, le gain doit pas etre énorme face aux meilleures extensions d'OpCode cache comme APC
http://www.brandonturner.net/blog/2009/07/fastcgi_php_opcode_cache_benchmarks/
Je sais que c'est pas exactement pareil, mais au final, le gain doit pas etre énorme face aux meilleures extensions d'OpCode cache comme APC
Non, il s'agit de cache opcode, qui est tout de même interprété. Là, on parle de conversion en C++, puis de compilation en code natif.
On s'en fou en pratique c'est pareil.
Une fois que le source est interpreté, et l'op-code compilé, ça revient au même en pratique.
Tout les language Web le font, le .NET et le Java y compris. Le .NET permettant de precompiler l'application par ex.
HipHop n'est pas à proprement parler un compilateur. Il faut le considérer comme un outil qui va transformer le code PHP en C++. Ensuite, ce dernier est compilé avec G++, le compilateur dédié au C++ faisant partie du célèbre GCC.
C'est exactement la définition d'un compilateur.
Transformer un langage A en langage B. Après que le langage B ne soit du C++ ou du bytecode pour VM et non des opcodes x86 ne change rien au fait que c'est un compilo.
lossendae
Le mercredi 3 février 2010 à 12:00:13
#39
Inscrit
le mardi 12 octobre 04
-
5469
commentaires
Dommage que cela fasse perdre le seul gros avantage des langages interprétés : eval() justement (et dérivées, il existe une fonction PHP plus véloce me semble-t-il).
Mais bon, c'était évident !
Mais bon, c'était évident !
There are many ways to do things in PHP and if you need eval() then your using the wrong method
lossendae
Le mercredi 3 février 2010 à 12:03:30
#40
Inscrit
le mardi 12 octobre 04
-
5469
commentaires
C'est pas comme ci Zend avait un mecanisme de cache du code "pre-compilé" de dispo :http://www.zend.com/fr/products/platform/#topapp
Lu sur la page qui présente le produit:
[quote:facebook]
[...]HipHop for PHP isn't technically a compiler itself. Rather it is a source code transformer. HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it.[...]
There's also Zend Server, a commercial product which makes PHP faster via opcode optimization and caching. Instead, we were thinking about transforming PHP source directly into C++ which can then be turned into native machine code.[...][/quote]
ça viens de Facebook donc ça doit pas être suffisamment pointu pour que tu te renseigne avant de porter un jugement à l'emporte pièce.
Il n'est plus possible de commenter cette actualité
Vous devez être connecté ou vous inscrire en haut pour pouvoir participer aux commentaires.














