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 327
lectures)
Il y a 133 commentaires
Mokona
Le mercredi 3 février 2010 à 17:01:51
#91
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
C'est pas la question.
Ce qui est cocasse, c'est qu'on est parti des CGI en C++, on a simplifié grâce à des langages comme PHP, on se rend compte d'un soucis de perfs sur un site de grande ampleur... Mais au lieu de redévelopper proprement en C++... on invente une usine à gaz pour passer du PHP à la moulinette et en sortir du C++...
Qu'est-c'qui est plus porc selon toi ?
Développer en PHP, ou la méthode Facebook de faire du C++ en passant par du PHP ?
Et puis, l'excuse des effectifs pour justifier la bidouille...
C'est sûr que c'est connu, Facebook c'est LA boîte pauvre s'il en est...
Ce qui est cocasse, c'est qu'on est parti des CGI en C++, on a simplifié grâce à des langages comme PHP, on se rend compte d'un soucis de perfs sur un site de grande ampleur... Mais au lieu de redévelopper proprement en C++... on invente une usine à gaz pour passer du PHP à la moulinette et en sortir du C++...
Qu'est-c'qui est plus porc selon toi ?
Développer en PHP, ou la méthode Facebook de faire du C++ en passant par du PHP ?
Et puis, l'excuse des effectifs pour justifier la bidouille...
C'est sûr que c'est connu, Facebook c'est LA boîte pauvre s'il en est...
il est clair que ce genre de moulinette ne donne jamais rien de bon... surtout quand on en prend l'habitude et qu'on commence à les empiler
et puis effectivement comme je l'ai dis dans un des premiers posts : php est tres performant s'il n'est pas developpé avec les pied
CounterFragger
Le mercredi 3 février 2010 à 17:04:55
#92
Inscrit
le mardi 10 juin 08
-
2101
commentaires
la ou je mettrait un bemol c'est pour les comparaisons :) sur un terme d'efficacité on peut tout a fait comparer un procedural et un LOO, la POO n'apporte rien niveau perfs machines, elle sert juste a faciliter la vie des projets et developpeurs

Et pas qu'un peu ! Question maintenance et modularité, la POO l'emporte haut la main. Je ne pense pas qu'il y ait des différences de performances flagrantes entre le C et le C++...
Faudrait également rappeler aux archi/developpeurs que Java/C# peuvent faire des appels a du code natif en utilisant les mécanismes prévus pour de la VM (JNI/PInvoke). Réécrire les 10%/20% de code qui "rame" en C/C++, c'est pas la mort.
Non, mais c'est concevoir un code dégueulasse !
On ne s'amuse pas à mélanger 36 langages différents pour éviter une maintenance douloureuse... chaques technos à ses avantages. c'est pas parce que c'est vieux que ca doit etre oublié ... surtout si c'est performant et pas vraiment egalé depuis sur cet aspect la dumoins (
counter ^^ ). vous pourrez pour permettre de coder comme des porc avec des techno conçuent de la meme maniere le jour ou vous serrez tous en fibre et des serveurs sui tiennent la route...
en attendant va peut etre falloir revoir ses classiques et faire des effots
J'ai vu à l'université comment récupérer une simple variable GET avec des CGI en C.
Puis j'ai juré de ne jamais y toucher...
Le CGI ne se justifie, de nos jours, que pour les applications Web dont la moindre milliseconde gagnée est cruciale (Google, eBay...). Mais pour les 3/4 des sites, je doute de son utilité...
Edité par CounterFragger le mercredi 3 février 2010 à 17:06
Pour ceux qui veulent des applications web en C++
http://www.webtoolkit.eu/wt
Pas besoin de se taper les GET ...
Il y a même une liaison avec Qt
http://www.webtoolkit.eu/wt
Pas besoin de se taper les GET ...
Il y a même une liaison avec Qt
CounterFragger
Le mercredi 3 février 2010 à 17:14:00
#94
Inscrit
le mardi 10 juin 08
-
2101
commentaires
Pour ceux qui veulent des applications web en C++
http://www.webtoolkit.eu/wt
Pas besoin de se taper les GET ...
Il y a même une liaison avec Qt
http://www.webtoolkit.eu/wt
Pas besoin de se taper les GET ...
Il y a même une liaison avec Qt
Les vrais hommes, ils parsent "a la mano" les requêtes HTTP...
Java a les performances du C bourdel de m****
Liens vers les benchs ?
127.0.0.1
Le mercredi 3 février 2010 à 17:17:41
#96
Inscrit
le mercredi 29 avril 09
-
12270
commentaires
Non, mais c'est concevoir un code dégueulasse !
On ne s'amuse pas à mélanger 36 langages différents pour éviter une maintenance douloureuse...
On ne s'amuse pas à mélanger 36 langages différents pour éviter une maintenance douloureuse...Ah. Encore un partisan du "tout ou rien"... sans doute encore à la recherche du langage idéal unique qui permet de tout faire, rapidement, élégamment, puissamment, extensiblement, sécuritairement, ...
Bonne chance dans ta noble quête, fier chevalier.
zefling
Le mercredi 3 février 2010 à 17:20:15
#97
Inscrit
le mercredi 30 juin 04
-
11441
commentaires
Ah. Encore un partisan du "tout ou rien"... sans doute encore à la recherche du langage idéal unique qui permet de tout faire, rapidement, élégamment, puissamment, extensiblement, sécuritairement, ...
Bonne chance dans ta noble quête, fier chevalier.
Et qui sache faire le thé. (tant qu'on y est
)
Mokona
Le mercredi 3 février 2010 à 17:21:03
#98
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
Je ne pense pas qu'il y ait des différences de performances flagrantes entre le C et le C++...
effectivement pour des algos courants sur des serveurs de base les differences ne se voient presque pas.
mais j'ai bossée pour certains projets ou apres quelques semaines les algo fournis en C++ etaient completement revu en C par les client pour diviser les cout de location de ressources
CounterFragger
Le mercredi 3 février 2010 à 17:22:33
#99
Inscrit
le mardi 10 juin 08
-
2101
commentaires
Ah. Encore un partisan du "tout ou rien"... sans doute encore à la recherche du langage idéal unique qui permet de tout faire, rapidement, élégamment, puissamment, extensiblement, sécuritairement, ...
Bonne chance dans ta noble quête, fier chevalier.
Le langage dans le langage, c'est ça qui me gêne.
En terme de maintenance, c'est assez dangereux... Insérer du C dans du java, c'est quand même la première fois que j'en entends parler !
Edité par CounterFragger le mercredi 3 février 2010 à 17:23
Artefact2
Le mercredi 3 février 2010 à 17:30:03
#100
Inscrit
le dimanche 10 juin 07
-
950
commentaires
Ah. Encore un partisan du "tout ou rien"... sans doute encore à la recherche du langage idéal unique qui permet de tout faire, rapidement, élégamment, puissamment, extensiblement, sécuritairement, ...
Bonne chance dans ta noble quête, fier chevalier.
Caml ? Je suis sérieux.
Il n'est plus possible de commenter cette actualité
Vous devez être connecté ou vous inscrire en haut pour pouvoir participer aux commentaires.














