Flash Info :
Microsoft annonce la XBox One : tout ce qu'il faut savoir
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 314
lectures)
Il y a 133 commentaires
charon.G
Le mercredi 3 février 2010 à 15:57:05
#81
Inscrit
le vendredi 29 avril 05
-
6358
commentaires
quel troll! java a de bien meilleures performances que le C.
Il ne faut pas abuser quand même
. Les languages managés ne peuvent pas être plus performants que des languages natifs. Après vu ce que cà apporte, au ratio les languages managés restent intéressants
. Ca me rappelle un débat sur PCI où une personne(elle se reconnaitra
) laissait entendre que javascript était aussi rapide et faisait autant que silverlight (.NET)
Mokona
Le mercredi 3 février 2010 à 15:58:03
#82
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
Y a que toi pour écrire le nom classes en y incluant à chaque fois le nom du package
Moi, j'aurais écrit :
Moi, j'aurais écrit :
le principe de la caricature est justement de ne pas reproduire fidelement sinon c'est pas drole
Zeredfox
Le mercredi 3 février 2010 à 16:00:36
#83
Inscrit
le vendredi 20 mai 05
-
1484
commentaires
Sydney pourra créé sa propre appli comme ça
CounterFragger
Le mercredi 3 février 2010 à 16:02:28
#84
Inscrit
le mardi 10 juin 08
-
2101
commentaires
oui
java.system.class.convert.integer.monCulsurlacommode(var)
est plus elegant que (int)var;
et la j'ai beaucoup ri sur celle la
Tu recommences avec le dénigrement du Java...
On ne peut pas comparer un langage qui sert surtout pour des serveurs d'applications Web et des systèmes embarqués à un langage dont on attend une rapidité d'exécution pour des applications lourdes et éventuellement un accès bas niveau au système sans contraintes de portabilité...
D'ailleurs, comparer un langage objet à un langage procédural...
Pour ma part, j'ai toujours trouvé que les fonctions et structures en C gérant les sockets étaient une horreur par rapport à leur équivalent Java...
Mokona
Le mercredi 3 février 2010 à 16:12:45
#85
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
Tu recommences avec le dénigrement du Java...
Autant dire que le C a de meilleures performances que le Java est une évidence, autant le rapport performances/temps de développement peut être clairement à l'avantage du Java pour certains projets !
On ne peut pas comparer un langage qui sert surtout pour des serveurs d'applications Web et des systèmes embarqués à un langage dont on attend une rapidité d'exécution pour des applications lourdes et éventuellement un accès bas niveau au système sans contraintes de portabilité...
D'ailleurs, comparer un langage objet à un langage procédural...
Pour ma part, j'ai toujours trouvé que les fonctions et structures en C gérant les sockets étaient une horreur par rapport à leur équivalent Java...
On ne peut pas comparer un langage qui sert surtout pour des serveurs d'applications Web et des systèmes embarqués à un langage dont on attend une rapidité d'exécution pour des applications lourdes et éventuellement un accès bas niveau au système sans contraintes de portabilité...
D'ailleurs, comparer un langage objet à un langage procédural...
Pour ma part, j'ai toujours trouvé que les fonctions et structures en C gérant les sockets étaient une horreur par rapport à leur équivalent Java...
cette fois ci je suis bien d'accord avec toi :) il est evident que qestion performances C ou C++ est bien meilleur, apres question de temps de developpement, bien sur que java l'emporte sur avec les EDI, intellisences et tout ces qui va avec ^^
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
pour en revenir aux avantage de temps perf/exec...
ces dernieres années les budgets de dev ont été bien serrés d'ou les langage à developpement rapide. seulement à economiser sur les equipes de dev on se rend compte que ca fini par couter cher en hardware ... donc au final faut quand meme tout repasser dans un langage plus performant pour economiser CPU, BP, etc qui au final peu couter un bras (surtout pour un service avec le succes de facebook).
je pense donbc qu'on devrai dans quelques années trouver de bon compromis et mieux reflechir à l'etalement des couts
Edité par Mokona le mercredi 3 février 2010 à 16:14
127.0.0.1
Le mercredi 3 février 2010 à 16:21:09
#86
Inscrit
le mercredi 29 avril 09
-
12264
commentaires
pour en revenir aux avantage de temps perf/exec...
ces dernieres années les budgets de dev ont été bien serrés d'ou les langage à developpement rapide. seulement à economiser sur les equipes de dev on se rend compte que ca fini par couter cher en hardware ... donc au final faut quand meme tout repasser dans un langage plus performant pour economiser CPU, BP, etc qui au final peu couter un bras (surtout pour un service avec le succes de facebook).
je pense donbc qu'on devrai dans quelques années trouver de bon compromis et mieux reflechir à l'etalement des couts
ces dernieres années les budgets de dev ont été bien serrés d'ou les langage à developpement rapide. seulement à economiser sur les equipes de dev on se rend compte que ca fini par couter cher en hardware ... donc au final faut quand meme tout repasser dans un langage plus performant pour economiser CPU, BP, etc qui au final peu couter un bras (surtout pour un service avec le succes de facebook).
je pense donbc qu'on devrai dans quelques années trouver de bon compromis et mieux reflechir à l'etalement des couts
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.
Ah, on retourne aux débuts d'Internet avec les CGI en C++, tout ça pour ça...
Ah, on retourne aux débuts d'Internet avec les CGI en C++, tout ça pour ça...
Me suis fait exactement la même réflexion
Mokona
Le mercredi 3 février 2010 à 16:34:46
#89
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
Ah, on retourne aux débuts d'Internet avec les CGI en C++, tout ça pour ça...
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
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
en attendant va peut etre falloir revoir ses classiques et faire des effots
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...
Il n'est plus possible de commenter cette actualité
Vous devez être connecté ou vous inscrire en haut pour pouvoir participer aux commentaires.














