Mac4Ever PrixMac Acheter un Mac Refurb-Store Débuter sur Mac Forum : 285 connectés

FaceBook double les performances de PHP et sort un transcodeur

Forum dédié à l'actualité du monde Mac, iPod et iPhone. Vous pouvez réagir aux news ici

Modérateur: Bicus

FaceBook double les performances de PHP et sort un transcodeur

Messagepar Didier le 02/02/10, 21:45

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)
Avatar de l’utilisateur
Didier
Vénérable Gros - Admin
 
Message(s) : 14218
Inscription : 28/11/00, 1:00
Localisation : Lausanne / Lyon

Messagepar MaHaTcH le 02/02/10, 21:47

faudra l'essayer. :)
MaHaTcH
Jeune Tourteau de Mac4Ever
 
Message(s) : 46
Inscription : 07/01/10, 19:21

Messagepar AliGator le 02/02/10, 22:03

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...?
Avatar de l’utilisateur
AliGator
Mac4Everien confirmé
 
Message(s) : 271
Inscription : 05/12/08, 15:04
Localisation : Rennes

Messagepar slainer68 le 02/02/10, 22:20

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é.
slainer68
Mac4Everien confirmé
 
Message(s) : 317
Inscription : 22/06/05, 21:37
Localisation : Mulhouse

Messagepar bounty1342 le 02/02/10, 22:23

@ 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 ?
bounty1342
Jeune Tourteau de Mac4Ever
 
Message(s) : 29
Inscription : 30/10/09, 14:38

Envoyé depuis Mac4Ever Mobile

Messagepar FanApple le 02/02/10, 22:48

Il faudrait mettre un symbole "attention article réservé au Geeks" sur ce genre d'article pour éviter de choquer les personnes non-averties = )
Apple
Think different.
FanApple
Mac4Everien confirmé
 
Message(s) : 274
Inscription : 06/01/10, 22:22
Localisation : France (Ardèche)

Envoyé depuis Mac4Ever Mobile

Messagepar SnowLeopard le 02/02/10, 22:59

FanApple +1
Autant lire du hieroglyphe
SnowLeopard
Mac4Everien confirmé
 
Message(s) : 443
Inscription : 21/08/09, 15:50

Re: Envoyé depuis Mac4Ever Mobile

Messagepar slainer68 le 02/02/10, 23:04

FanApple a écrit: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 !
slainer68
Mac4Everien confirmé
 
Message(s) : 317
Inscription : 22/06/05, 21:37
Localisation : Mulhouse

Re: Envoyé depuis Mac4Ever Mobile

Messagepar Didier le 02/02/10, 23:15

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

slainer68 a écrit: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.

slainer68 a écrit: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.
Avatar de l’utilisateur
Didier
Vénérable Gros - Admin
 
Message(s) : 14218
Inscription : 28/11/00, 1:00
Localisation : Lausanne / Lyon

Re:

Messagepar Spyro le 02/02/10, 23:24

bounty1342 a écrit:
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.
Image Image Pas envoyé depuis mac4ever mobile
Avatar de l’utilisateur
Spyro
Mac4Everien confirmé
 
Message(s) : 336
Inscription : 19/06/07, 14:54
Localisation : Pays des dragons

Messagepar Macleone le 02/02/10, 23:47

C'est cool le lien sur github. Inutile, mais cool.
«Des tas de gens seraient aussi lâche que moi s'ils en avaient le courage.» Rincevent
Avatar de l’utilisateur
Macleone
Mac4Ever's Flood
 
Message(s) : 3277
Inscription : 18/09/02, 0:00
Localisation : Haut-Doubs / Paris

Messagepar StanOfSky le 03/02/10, 0:09

[quote="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.
[quote="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".
StanOfSky
Jeune Tourteau de Mac4Ever
 
Message(s) : 23
Inscription : 23/10/09, 15:51

Re: Re:

Messagepar yellowiscool le 03/02/10, 0:10

Spyro a écrit:
bounty1342 a écrit:
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).
Envoyé depuis mon lapin.
Avatar de l’utilisateur
yellowiscool
Petit Gros - Modérateur
 
Message(s) : 3695
Inscription : 01/03/06, 18:26
Localisation : Var

Envoyé depuis Mac4Ever Mobile

Messagepar tinels le 03/02/10, 1:23

Facebook pas FaceBook
iMac 24"
iPad iOS 4.2.1 16Go Wifi
iPhone 4 iOS 4.2.1 16Go Orange
tinels
Jeune Tourteau de Mac4Ever
 
Message(s) : 48
Inscription : 30/09/08, 10:03

Messagepar cantor le 03/02/10, 1:26

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

:roll:
cantor
Jeune Tourteau de Mac4Ever
 
Message(s) : 87
Inscription : 12/03/09, 15:55

Suivant

Retour vers Actualité Mac et iPod

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)