Mac4Ever PrixMac Acheter un Mac Refurb-Store Mac-LAN : Jouez ! Forum : 236 connectés
Le 02/02/2010 à 20h45 

FaceBook double les performances de PHP et sort un transcodeur

Nous vous en parlions comme d'une rumeur, FaceBook vient de le confirmer ce soir, en présentant HipHop.

« Je travaille dessus depuis 2 ans » déclare Haiping Zhao. L'ingénieur affirme avoir divisé par deux, le nombre de processeurs nécessaires pour exécuter le même code PHP, le gain étant variable suivant les pages. Comment réaliser un tel miracle ? Réponse de l'intéressé :

« HipHop pour PHP n'est pas un compilateur, en tant que tel. C'est plutôt un transcodeur de code source. HipHop transforme votre code source PHP en code source C++ optimisé, puis utilise g++ pour le compiler.  »

FaceBook double les performances de PHP


« HipHop execute le code source dans une sémantique équivalente et sacrifie quelques fonctions rarement utilisées, comme eval() [..] HipHop inclut un transcodeur, une nouvelle implémentation du runtime PHP, a réécrit un certain nombre de bibliothèques pour prendre en comptes les optimisations. »

Le concept est ingénieux : au lieu de passer du temps à créer un compilateur efficace ou de recréer un énième système de cache de bytecode, ils utilisent le bon vieux GCC pour créer les binaires finaux. Toute la difficulté est de bien gérer la transformation en C++, ce qui est loin d'être évident.

FaceBook a décidé de mettre ce code en OpenSource : tout le web pourra alors bénéficier de cette technologie, et devrait pouvoir l'utiliser, une fois bien stabilisée. Haiping Zhao estime toutefois que c'est déjà le cas et que de nombreux tests unitaires ont été validés, et que le produit est déjà très fiable.

http://github.com/facebook/
http://github.com/facebook/hiphop-php/wikis (pas encore ouvert au public)

Lire l'actu :   ou consulter tous les titres...

Disponible également pour iPad et Android
Les réactions à cette news
Pour voir les réactions directement dans le forum, cliquez ici.
  • 1 2 >>
  • @ Mahatch :

    faudra l'essayer. :)
  • @ Aligator :

    Cool, ça risque de profiter à bcp de monde :)

    Pour info, cette technique de transcoder un langage en un autre pour utiliser un compilateur existant n'est pas nouvelle.
    Par exemple, on peut considérer qu'Objective-C utilise déjà grosso modo ce concept, (étant en fait une surcouche du C), cf LLVM.
    Des langages de grammaires comme bison/yacc/... ou les compilateurs Prolog ou ASN1 se basent aussi sur ce genre de chaîne de compilation : c'est en effet beaucoup plus efficace de convertir en C et profiter des outils super optimisés comme gcc, que d'utiliser un langage de script :)


    Sinon, beau boulot FB... mais par contre je m'interroge quant à l'utilisation grand public : pour le site de Mr Tout le Monde, hébergé chez OVH ou autre, y'aura toujours un interpréteur PHP côté serveur, je doute qu'ils acceptent les versions optimisées (et compilées) de vos scripts PHP... donc...?
  • @ Slainer68 :

    et ils auraient pas pu forker php complètement et en faire un vrai langage ? je sais pas moi, un langage sans instruction goto ou autre débilité.
  • @ Bounty1342 :

    @ Aligator :

    Des langages de grammaires comme bison/yacc/


    Non, ceux sont des générateurs d'analyseur syntaxique et lexicographique.

    c'est en effet beaucoup plus efficace de convertir en C et profiter des outils super optimisés comme gcc, que d'utiliser un langage de script :)

    Non plu, la conversion fait que tu perds en optimisations, donc c'est moins efficace que du code natif. Tu as cepandant raison, le code est plus efficace car il n'est plus interprété et ne s'exécute pas dans une JVM...


    Sinon, beau boulot FB... mais par contre je m'interroge quant à l'utilisation grand public : pour le site de Mr Tout le Monde, hébergé chez OVH ou autre, y'aura toujours un interpréteur PHP côté serveur, je doute qu'ils acceptent les versions optimisées (et compilées) de vos scripts PHP... donc...?

    CGI ?
  • @ Fanapple : Posté depuis Mac4Ever Mobile

    Il faudrait mettre un symbole "attention article réservé au Geeks" sur ce genre d'article pour éviter de choquer les personnes non-averties = )
  • @ Snowleopard : Posté depuis Mac4Ever Mobile

    FanApple +1
    Autant lire du hieroglyphe
  • @ Slainer68 : Re: Envoyé depuis Mac4Ever Mobile

    Posté par "FanApple"
    Il faudrait mettre un symbole "attention article réservé au Geeks" sur ce genre d'article pour éviter de choquer les personnes non-averties = )


    nan mais vous avez rien compris, le webmaster de m4e est pro-PHP. Donc c'est normal qu'il publie ce genre de news, même si une news parlant exclusivement de PHP et facebook n'a visiblement rien à foutre sur un site Mac. mais bon on s'en cogne il fait ce qu'il veut.

    moi je vais bientot releaser un fork de PHP nommé "PlopPlop". Ce super fork réintegrera les numéros de lignes obligatoires en début de ligne !
    Comme en BASIC dans les années 80. Ça ira bien avec l'instruction goto qui a été réintroduite récemment.

    Ça fera fureur je te le dis !
  • @ Didier : Re: Envoyé depuis Mac4Ever Mobile

    Halala, dès qu'on ose parler de code, on lit tout et n'importe quoi :-)

    Posté par "slainer68"
    nan mais vous avez rien compris, le webmaster de m4e est pro-PHP.


    C'est faux. Si le front-end de Mac4Ever est majoritairement en PHP (couplé à de gros systèmes de cache), nous utilisons énormément d'autres langages et technologies en fonctions des services et des besoins. Pour tout bon programmeur, il n'y a pas à être pro-php ou pro-c++. A chaque langage son utilisation.

    Posté par "slainer68"
    Donc c'est normal qu'il publie ce genre de news, même si une news parlant exclusivement de PHP et facebook n'a visiblement rien à foutre sur un site Mac. mais bon on s'en cogne il fait ce qu'il veut.


    Mac4Ever a toujours évoqué les news relatives aux nouvelles technologies, dont font parti les annonces concernant les langages de programmation. Cherche un peu, et tu verras dans nos news/article, de nombreux papiers consacrés à Java, Qt, Python, Cocoa, AppleScript, C++, Ruby et j'en passe.

    Voilà voilà :-) C'était juste histoire de recadrer un peu le sujet.
  • @ Spyro : Re:

    Posté par "bounty1342"

    Sinon, beau boulot FB... mais par contre je m'interroge quant à l'utilisation grand public : pour le site de Mr Tout le Monde, hébergé chez OVH ou autre, y'aura toujours un interpréteur PHP côté serveur, je doute qu'ils acceptent les versions optimisées (et compilées) de vos scripts PHP... donc...?

    CGI ?

    Bonne réponse. OVH justement permet d'utiliser des applications compilées en CGI sur l'hébergement mutualisé, mais je ne sais pas ce qu'il en est des autres hébergeurs.
  • @ Macleone :

    C'est cool le lien sur github. Inutile, mais cool.
  • @ Stanofsky :

    Posté par "bounty1342"
    @ Aligator :

    Des langages de grammaires comme bison/yacc/


    Non, ceux sont des générateurs d'analyseur syntaxique et lexicographique.

    Lex/flex pour l'analyse syntaxique, bison/yacc pour la grammaire.
    Effectivement, mauvais exemple puisque l'intérêt de ce genre d'outil est simplement de générer une partie du code d'un programme plus vaste en c ou autre.
    Posté par "bounty1342"


    c'est en effet beaucoup plus efficace de convertir en C et profiter des outils super optimisés comme gcc, que d'utiliser un langage de script :)

    Non plu, la conversion fait que tu perds en optimisations, donc c'est moins efficace que du code natif. Tu as cepandant raison, le code est plus efficace car il n'est plus interprété et ne s'exécute pas dans une JVM...

    Le code que crache un compilateur est bien plus optimisé, à tout point de vue, que ce que pourrait sortir un développeur en natif.
    Et comme, je suppose, le code n'est pas transformé/compilé, à chaque requète php (mais mis en cache), le résultat peut être bien plus performant que du code "natif".
  • @ Yellowiscool : Re: Re:

    Posté par "Spyro"
    Posté par "bounty1342"

    Sinon, beau boulot FB... mais par contre je m'interroge quant à l'utilisation grand public : pour le site de Mr Tout le Monde, hébergé chez OVH ou autre, y'aura toujours un interpréteur PHP côté serveur, je doute qu'ils acceptent les versions optimisées (et compilées) de vos scripts PHP... donc...?

    CGI ?

    Bonne réponse. OVH justement permet d'utiliser des applications compilées en CGI sur l'hébergement mutualisé, mais je ne sais pas ce qu'il en est des autres hébergeurs.


    Oui mais il faudrait au moins du fastcgi, car le cgi lance un programme à chaque requête, ce qui fait qu'au final, le php normal est bien plus rapide (mais vraiment bien plus).
  • @ Tinels : Posté depuis Mac4Ever Mobile

    Facebook pas FaceBook
  • @ Cantor :

    Moi je dis que quitte a faire ça, autant programmer tout Facebook en C++, en l'optimisant bien dès le départ.

    :roll:
  • @ Poolshark :

    Heu juste une petite question...
    N'étant pas un spécialiste de la "chose" (malgré de bonnes bases), l'intérêt de ce transcodeur se situe plutôt côté serveurs non ?

    Donc au final, que gagne l'utilisateur?
    Est-ce dans l'efficacité : plus de vitesse dans l'obtention de ses requêtes, temps de réponse, affichage, etc ?
    Ou cela aura une incidence sur al richesse des sites à venir, en profitant du gain de disponibilité CPU des serveurs ?
  • 1 2 >>
Réagissez à cette news !
Pour réagir directement dans le forum, cliquez ici.
  • Pour réagir aux news, vous devez être identifié.
    Si vous ne possédez pas de compte, créez-en un !
  • Login :
  • Password :
 /  /    














Mon Mac4Ever

Vivez Mac4Ever à 100% !
  • Participer au site
  • Consulter ma messagerie privée
  • Modifier mon profil








denis code en live !