S'identifier / Créer un compte
  • Actualités
  • Dossiers
  • Tests
  • Commentaires
  • INpactiens
Publicité

Facebook veut accélérer les sites PHP avec son HipHop

Transformer le PHP en C++

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.

facebook

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.

Publiée le 03/02/2010 à 11:00

Soutenez l'indépendance de Next INpact en devenant Premium

  • Tout le contenu de Next INpact sans pub
  • Et bien plus encore...

Il y a 133 commentaires

Avatar de klemix INpactien
klemix Le mercredi 3 février 2010 à 11:41:00
Inscrit le jeudi 10 juin 04 - 1316 commentaires
Ils se sont inspiré des frères pétard pour le nom ?
Avatar de gordontesos INpactien
gordontesos Le mercredi 3 février 2010 à 11:50:11
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;
Avatar de the_mei INpactien
the_mei Le mercredi 3 février 2010 à 11:51:23
Inscrit le mardi 24 août 04 - 2545 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
Avatar de gordontesos INpactien
gordontesos Le mercredi 3 février 2010 à 11:52:27
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.
Avatar de boulator INpactien
boulator Le mercredi 3 février 2010 à 11:53:30
Inscrit le vendredi 11 mai 07 - 3 commentaires
Et c'est quoi la différence fondamentale avec des outils comme Bambalam ?
Avatar de PhenXDesign INpactien
PhenXDesign Le mercredi 3 février 2010 à 11:53:39
Inscrit le samedi 24 janvier 04 - 167 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
Avatar de the_mei INpactien
the_mei Le mercredi 3 février 2010 à 11:55:31
Inscrit le mardi 24 août 04 - 2545 commentaires

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.
Avatar de Yangzebul INpactien
Yangzebul Le mercredi 3 février 2010 à 11:57:51
Inscrit le mardi 6 mai 03 - 2721 commentaires
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.
Avatar de lossendae INpactien
lossendae Le mercredi 3 février 2010 à 12:00:13
Inscrit le mardi 12 octobre 04 - 6738 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 !


There are many ways to do things in PHP and if you need eval() then your using the wrong method
Avatar de lossendae INpactien
lossendae Le mercredi 3 février 2010 à 12:03:30
Inscrit le mardi 12 octobre 04 - 6738 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.
;