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 304
lectures)
Il y a 133 commentaires
Mokona
Le mercredi 3 février 2010 à 11:28:33
#21
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
hein?!?
première nouvelle.
première nouvelle.depuis le 4 oui meme si y'avais quand meme moyen de ruser pour le 3
Ben, jusqu'à preuve du contraire, C++ est un langage objet !


Oui mais moi je parle de programmation objet en PHP. Bien sur que le C++ est un langage objet, mais quid de la compatibilité entre les deux ?
Passque perso je code pratiquement plus qu'en objet sur PHP... Et ca marche vraiment bien d'ailleurs
D'après ce qu'il marque les tests sont déjà en cours, donc ca doit déjà être suffisamment stable en soit pour être utilisable même en beta...
J'espère...
Mais d'après une info de Vincent ci-dessus, il seraient pas beaucoup de devs, donc la phase de tests doit être raccourcie AMHA.
CounterFragger
Le mercredi 3 février 2010 à 11:30:56
#24
Inscrit
le mardi 10 juin 08
-
2098
commentaires
Oui mais moi je parle de programmation objet en PHP. Bien sur que le C++ est un langage objet, mais quid de la compatibilité entre les deux ?
Passque perso je code pratiquement plus qu'en objet sur PHP... Et ca marche vraiment bien d'ailleurs
Ben si le PHP est transformé en C++ et que tous les deux supportent l'objet, il en doit pas y avoir vraiment de problème... De toute façon, j'imagine que le but est d'avoir une transparence totale pour cette transformation !
Edité par CounterFragger le mercredi 3 février 2010 à 11:33
DRH: Alors vous faisiez quoi chez Facebook?
Développeur: Je développais le HipHop!
DRH: Désolé monsieur, mais votre profil ne nous intéresse pas, nous recherchons des gens ayant une expérience professionnelle en programmation.. Pas des danseurs.
Développeur: Je développais le HipHop!
DRH: Désolé monsieur, mais votre profil ne nous intéresse pas, nous recherchons des gens ayant une expérience professionnelle en programmation.. Pas des danseurs.
Mokona
Le mercredi 3 février 2010 à 11:32:54
#26
Inscrite
le mercredi 4 novembre 09
-
1210
commentaires
On parlait de C++, qui est un langage orienté objet. PHP, c'est plutôt depuis la version 4 effectivement.
au temps pour moi
mais du coup j'ai pas compris pourquoi y'avais debat sur la POO du C++ alors que c'est evident
127.0.0.1
Le mercredi 3 février 2010 à 11:33:48
#27
Inscrit
le mercredi 29 avril 09
-
12252
commentaires
Pas nécessairement. Prend exemple sur Google, sans connaître leur code, je présume quand même que leurs devs sont des tueurs russes. Mais le fait qu'une plateforme soit bien codée ne suffit pas à ce qu'elle puisse supporter une charge infinie. Optimiser ainsi la façon d'exécuter le code permet d'économiser des ressources serveur, et maintenir une durée d'exécution des pages faible sur tout le réseau.
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++.
Edité par 127_0_0_1 le mercredi 3 février 2010 à 11:34
DRH: Alors vous faisiez quoi chez Facebook?
Développeur: Je développais le HipHop!
DRH: Désolé monsieur, mais votre profil ne nous intéresse pas, nous recherchons des gens ayant une expérience professionnelle en programmation.. Pas des danseurs.
Développeur: Je développais le HipHop!
DRH: Désolé monsieur, mais votre profil ne nous intéresse pas, nous recherchons des gens ayant une expérience professionnelle en programmation.. Pas des danseurs.
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 !
Je me pose la même question, les classes utilisant de l'OO seront-elles prises en charge ?
Au "pire" des cas, il faudra(it) attendre que les devs PHP en fassent une première adaptation, pour voir.
Mais bon, c'était évident !
Je me pose la même question, les classes utilisant de l'OO seront-elles prises en charge ?
Au "pire" des cas, il faudra(it) attendre que les devs PHP en fassent une première adaptation, pour voir.
pti_pingu
Le mercredi 3 février 2010 à 11:35:06
#30
Inscrit
le jeudi 15 janvier 09
-
9183
commentaires
Enfin ça peut porter ses fruits, si bien entendu on ne se retrouve pas sur un site embarquant du flash et des actions javascript à gogo!
Parce que bon, aujourd'hui, un site bien foutu/bling bling/web2.0, ce n'est pas que du code interprété/exécuté côté serveur.
Parce que bon, aujourd'hui, un site bien foutu/bling bling/web2.0, ce n'est pas que du code interprété/exécuté côté serveur.
Il n'est plus possible de commenter cette actualité
Vous devez être connecté ou vous inscrire en haut pour pouvoir participer aux commentaires.













