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 Yangzebul INpactien
Yangzebul Le mercredi 3 février 2010 à 13:53:36
Inscrit le mardi 6 mai 03 - 2720 commentaires
C++ comme PHP n'impose pas l'orienté objet, ce n'est pas du Java ou du .NET.


Mikfr parle de "classes php", c'est déjà un peu plus ciblé.

Mais cela ne change rien au propos, la POO c'est avant tout une histopire de modélisation/conception et pas de syntaxe. Tu peux très bien faire en java un gros programme procédural des familles dans ton main, et inversement dans un langage sans véritables classes ou prototype faire toute une modélisation OO (tu n'es juste pas assisté par le langage).
Avatar de Jarodd INpactien
Jarodd Le mercredi 3 février 2010 à 14:03:43
Inscrit le mardi 26 octobre 04 - 19527 commentaires
Pour une fois qu'on parle de Facebook pour une action positive de leur part
Avatar de hokkos INpactien
hokkos Le mercredi 3 février 2010 à 14:08:30
Inscrit le mardi 22 mars 05 - 3451 commentaires

Si un petit traitement coté serveur effectué un fois peut baisser la consomation à chaque acces, je pense qu'il y a moyen que ça vienne vite sur les hébergements mutualisés


Vu que HPHP ne gère pas eval() je l'imagine mal étre transposé sans test de la part du dev sur les hébergements mutualisés.



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++.


Facebook utilise les équivalants de BigTable et autre MapReduce avec Hadoop. Et de meme Google avec le projet unladen swallow cherche à compiler le python avec LLVM.

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.

apparement ils obtiennent de meilleurs résultat en compilant en c++ puis en natif, c'est compréhensible les opcode c'est utile quand une appli tourne longtemps, alors le profiler peut tout améliorer, la on a des exécutions de page php qui doivent prendre moins de 500ms; on fait pas de taches longues en arrère plan en php, et en traduisant en C++ même pas besoin de s'occuper à relâcher la mémoire pour le coup, tout est nettoyé à la fin du processus.
Avatar de hokkos INpactien
hokkos Le mercredi 3 février 2010 à 14:15:26
Inscrit le mardi 22 mars 05 - 3451 commentaires
Au final j'me suis toujours demandé pourquoi on utilisait un langage non compilé. Quand on sait que le nombre de serveurs de google, facebook de yahoo dépasse le million.
Ça risque de leur faire des énormes économies si tous suivent l'exemple.


Parce qu'on utilise des langages simples, dynamiques, faiblement typés, sans passer par les 5min de compilation du C++, interprétable, avec d'origine de grosses librairies bien fournies derrière; au final ca fait des langages lents. Et c'est plutôt la vitesse de dev qui comptait sur la vitesse d'exécution.

Mais maintenant on cherche à allier la facilité de dev de ces langages et de les rendre rapide; avec unladen swallow pour python, les différentes VM de ruby...
Avatar de 127.0.0.1 INpactien
127.0.0.1 Le mercredi 3 février 2010 à 14:53:54
Inscrit le mercredi 29 avril 09 - 13213 commentaires
Facebook utilise les équivalants de BigTable et autre MapReduce avec Hadoop.


Ah ben c'est pire que je pensais. Ils utilisent des clusters Hadoop (et des gros en plus : 2500 cpu cores) et ils ont des problèmes de perfs ? Je pense qu'il faut vraiment revoir l'architecture de l'appli

Et de meme Google avec le projet unladen swallow cherche à compiler le python avec LLVM.


L'optimisation des perfs par une meilleure compilation, je n'y vois rien de mal. C'est une bonne idée de passer par LLVM pour optimiser le code avant compilation.

Mais dans le cas de Facebook, j'ai l'impression que c'est l'arbre qui cache la forêt.
Avatar de hokkos INpactien
hokkos Le mercredi 3 février 2010 à 14:58:25
Inscrit le mardi 22 mars 05 - 3451 commentaires

Ah ben c'est pire que je pensais. Ils utilisent des clusters Hadoop (et des gros en plus : 2500 cpu cores) et ils ont des problèmes de perfs ? Je pense qu'il faut vraiment revoir l'architecture de l'appli


L'optimisation des perfs par une meilleure compilation, je n'y vois rien de mal. C'est une bonne idée de passer par LLVM pour optimiser le code avant compilation.

Mais dans le cas de Facebook, j'ai l'impression que c'est l'arbre qui cache la forêt.


Apparemment Facebook à de plus en plus de traitement des données pour afficher chaque page, et ses ingé connaissent surtout le PHP... il font même du data mining en php. Enfin bref, ils se sont trompé dès le début.
Avatar de satandierbis INpactien
satandierbis Le mercredi 3 février 2010 à 15:02:47
Inscrit le mercredi 19 novembre 08 - 1223 commentaires

Apparemment Facebook à de plus en plus de traitement des données pour afficher chaque page, et ses ingé connaissent surtout le PHP... il font même du data mining en php. Enfin bref, ils se sont trompé dès le début.

Pourtant ils le savaient depuis le début que leur business model allait être d'exploiter les données personnelles de leurs utilisateurs

Faire ça en php... grossière erreur
Avatar de 127.0.0.1 INpactien
127.0.0.1 Le mercredi 3 février 2010 à 15:05:37
Inscrit le mercredi 29 avril 09 - 13213 commentaires
Apparemment Facebook à de plus en plus de traitement des données pour afficher chaque page, et ses ingé connaissent surtout le PHP... il font même du data mining en php. Enfin bref, ils se sont trompé dès le début.


Le genre de petit projet qui commence vite fait en PHP, puis qui grandit... A mon avis, ne pas s'occuper de la structure de l'application maintenant c'est se prendre un mur plus tard.

'fin bref, un bon compilo PHP/C++ c'est toujours ca de pris.
Avatar de fuse INpactien
fuse Le mercredi 3 février 2010 à 15:05:56
Inscrit le lundi 30 juin 03 - 26 commentaires
Pourtant ils le savaient depuis le début que leur business model allait être d'exploiter les données personnelles de leurs utilisateurs

Faire ça en php... grossière erreur


Si ça les pouse à faire de la recherche pour améliorer les perfs de php , tant pis pour eux, tant mieux pour nous
Avatar de wagaf INpactien
wagaf Le mercredi 3 février 2010 à 15:09:03
Inscrit le lundi 15 mai 06 - 1771 commentaires
Un autre projet similaire : ooc.

Un langage vraiment innovant : très haut niveau mais qui est converti en C (puis compilé), ce qui permet d'utiliser toutes les librairies C/C++ existantes et de faire des bidings pour celles-ci de manière presque automatique.

De plus on a un langage très élégant (comme le Java ou le C#) mais qui permet d'avoir les performances du C.

Edité par wagaf-d le mercredi 3 février 2010 à 15:11
;