IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Facebook dévoile sa ré-écriture de PHP
HipHop traduit PHP en C++ puis le compile avec g++

Le , par Doksuri

443PARTAGES

1  0 
Mise à jour du 03.02.2010 (Katleen Erna)
Facebook dévoile sa ré-écriture de PHP, HipHop traduit PHP en C++ puis le compile avec g++

L'information vient d'être officiellement confirmée par Facebook, suite a de nombreuses rumeurs sur la toile qui anticipaient son annonce. Il se murmurait ici et là qu'une équipe du réseau social aurait travaillé sur un nouveau compiler PHP JIT (Just In Time) qui permettrait des augmentations de vitesse allant jusqu'à 80%.

Le projet serait assez similaire à l'Unladen Swallow de Google, qui avait consisté en une ré-écriture du compiler de Python.

Le projet des équipes de Facebook s'appelle HipHop et il est disponible depuis cet après-midi en open-source. Il résulte d'un travail acharné et secret de deux longues années.

Mais contrairement à ce qui était attendu, HipHop consiste en fait en une ré-écriture du runtime de PHP. Le code source de PHP est traduit en C++ puis compilé avec g++.

Un ingénieur ayant travaillé sur le projet, Haiping Zhao, déclare : "Avec HipHop, nous avons réduit l'usage du CPU sur nos serveurs web d'environ 50%".

Ceci devrait permettre d'allèger le datacenter de Facebook.

"HipHop execute le code source d'une manière sémantique et en sacrifie certaines fonctionnalités peu utilisées, comme eval(), pour de meilleures performances. HipHop nous permet de corriger la logique de l'assemblage final d'une page en PHP.", continue-t-il.

Il conclut en indiquant que PHP et C++ partagent pratiquement la même syntaxe, mais que C++ est ien moins gourmand en ressources système.

RideKick : Mise à jour 02/02/2009

Sortie de HipHop pour PHP par les développeurs de FaceBook


Comme annoncé, une équipe réduite de FaceBook a développé un inerpreteur de code PHP. En accord avec l'annonce officielle, HipHop n'est pas un compilateur mais plutôt un convertisseur de code PHP vers C++ qui sera ensuite compilé par g++.
HipHop éxecute donc le code PHP sémantiquement et il faudra donc s'attendre à abandonner quelques fonctions propres à PHP au profit des performances comme eval().

HipHop intègre un convertisseur mais aussi une nouvelle implémentation du runtime PHP et une version réécrite des plusieurs librairies communes pour tirer profit au maximum des performances.

Comment fonctionne HipHop ?

HipHop créé donc du code static qui fait le lien vers les fonctions et variables PHP statiques, ce qui représente une grande part des scripts actuels (en comparaison du code dynamique qui peut être généré avec PHP)

Le process de conversion comprends 3 phases importantes :

  • Une analyse statique dans laquelle HipHop collecte des information sur qui déclare quoi et sur les dépendences.
  • L'inférence de type dans laquelle on choisit le type de variable C++ correspondant le plus approprié (scalaire, chaîne de caractères, classe, objet, variant etc ...)
  • La génération du code qui pour la grande part revient à faire la correspondance entre les états et les expressions PHP en "tats et expressions C++


Ci joint un diagramme de process du fonctionnement de HipHop



Bonjour amis phpeurs,

un ami a moi a retenu mon attention quand il m'a parle d'un "nouveau php" qu'il avait lu sur le net.

voici donc l'article en question : il s'agit d'un employe facebook qui repond a quelques questions (ses reponses font plus ou moins peur)

mais la ou ca devient perturbant : c'est vers la fin :

Rumpus: So tell me about the engineers.

Employee: They’re weird, and smart as balls. For example, this guy right now is single-handedly rewriting, essentially, the entire site. Our site is coded, I’d say, 90% in PHP. All the front end — everything you see — is generated via a language called PHP. He is creating HPHP, Hyper-PHP, which means he’s literally rewriting the entire language. There’s this distinction in coding between a scripted language and a compiled language. PHP is an example of a scripted language. The computer or browser reads the program like a script, from top to bottom, and executes it in that order: anything you declare at the bottom cannot be referenced at the top. But with a compiled language, the program you write is compiled into an executable file. It doesn’t have to read the program from beginning to end in order to execute commands. It’s much faster that way. So this engineer is converting the site from one that runs on a scripted language to one that runs on a compiled language. However, if you went to go talk to him about basketball, you would probably have the most awkward conversation you’d have with a human being in your entire life. You just can’t talk to these people on a normal level. If you wanted to talk about basketball, talk about graph theory. Then he’d get it. And there’s a lot of people like that. But by golly, they can do their jobs.

Rumpus: So what will be the net effect of running the site on Hyper PHP?

Employee: We’re going to reduce our CPU usage on our servers by 80%, so practically, users will just see this as a faster site. Pages will load in one fifth of the time that they used to.

Rumpus: When’s it coming out?

Employee: When it’s done. Next couple of months, ideally.
voila, c'etait pour avoir des avis dessus...
parceque 80% d'usage CPU c'est pas negligeable quoi !

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de metagoto
Membre éclairé https://www.developpez.com
Le 02/02/2010 à 0:23
Cela participe au léger regain d'attention qui émerge depuis quelques temps: utiliser du code compilé coté server, à commencer par C++. Au lieu de multiplier les servers et les machines pour supporter la charge, autant utiliser un langage approprié par nature.
1  0 
Avatar de albedo0
Membre actif https://www.developpez.com
Le 02/02/2010 à 11:40
Je ne suis pas vraiment à l'aise avec ce genre de considérations techniques.

Concrètement pour le développement, ça signifie que l'on risque d'avoir à réapprendre le langage ? du moins en partie ? Ou c'est juste au niveau du traitement que cela change ?
1  0 
Avatar de RunCodePhp
Membre expert https://www.developpez.com
Le 02/02/2010 à 13:26
Citation Envoyé par metagoto
Cela participe au léger regain d'attention qui émerge depuis quelques temps: utiliser du code compilé coté server, à commencer par C++. Au lieu de multiplier les servers et les machines pour supporter la charge, autant utiliser un langage approprié par nature.
+1

Si Php ne correspond pas à leur besoin, pourquoi ne pas utiliser un autre langage ?

Que je sache, Php n'est pas le seul et unique langage pour créer des sites Web dynamique.

Ou alors, ils n'ont qu'à créer leur propre langage, dérivé de Php, C, C++ ou pas, peu importe, cela donnera plus de choix, mais modifier Php selon leur propre exigence, ça me semble un peu radical comme procédé.

Déjà que je ne suis absolument pas un partisan des FaceBook ou autre Twiter, alors si ces fous furieux veulent tout révolutionner parce qu'ils n'arrivent pas à stocker/flicker la planète entière dans leur Bdd en 1 seconde, ben là j'suis pas d'accord

Une affaire à suivre en tout cas.
1  0 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 02/02/2010 à 13:44
Salut,

De ce que j'en comprend il ne s'agit pas de modifier le langage PHP mais uniquement le moteur, soit mod_php.

En clair les sources seront toujours des fichiers PHP standard avec la même syntaxe et les mêmes règles, mais ils pourront être transformé en fichier compilé. L'intérêt étant d'éviter de tout recompiler à chaque requête d'un client.

a++
1  0 
Avatar de Thes32
Expert confirmé https://www.developpez.com
Le 02/02/2010 à 13:48
+1 adiGuba
le truc c'est que même facebook ne va pas réécrire son appli, il reste tel qu'il est. La modification intervient plus bas comme on l'a dit plus haut.
1  0 
Avatar de RunCodePhp
Membre expert https://www.developpez.com
Le 02/02/2010 à 14:08
Peut être, mais je suis de nature prudente, voir ici méfiante.

Ces gros bisounours qui ont tous l'air forts sympathiques te promette monts et merveilles, 80% de ressources d'économisés ... merci les gars, trop fort

Puis un de ces 4 matins tu vois à la une du mag developper.com que Php c'est fait racheté par le gentil bisousours

Personnellement, je préfère de loin qu'une société finance un projet Open Source et que la communauté s'occupe de la direction qu'elle veux prendre, au lieu qu'une société impose en quelque sorte l'orientation du projet.
Dans ce dernier cas on s'éloigne pas mal de la philosophie Open Source.

C'est cela qui m'interroge.
Le gain en ressource en est une autre.

Brefs ... Un MySQL s'est déjà fait croquer tout cru ...
V'là que Php commence à donner des idées à un FaceBook.

Dans peu de temps ça sera au tour d'Apache de passer sur l'billard

A quand la main mise dessus ?

Désolé mais je n'y vois pas là de quoi se réjouir, loin de là
1  0 
Avatar de Doksuri
Expert confirmé https://www.developpez.com
Le 02/02/2010 à 14:11
Citation Envoyé par Thes32 Voir le message
La modification intervient plus bas comme on l'a dit plus haut.
huhu, c'est en haut ou en bas alors
1  0 
Avatar de RideKick
Rédacteur https://www.developpez.com
Le 02/02/2010 à 14:18
Pas sur qu'on aille jusque la "main mise".
Si FaceBook modifie une couche bas niveau pour accelerer PHP pourquoi pas parce que :

1- Personne ne saura obligé de l'utiliser, qui voudra en profiter je pense le fera
2- La communauté PHP décidera de l'intégration ou non de ce module, comme elle le fait actuellement pour tout le reste
3- Pour l'instant ce n'est que des suppositions, voir un hoax ......attendons de voir.

Et puis si ça fonctionne, que c'est stable et qu'on y gagne réellement sur le principe qui s'en plaindrait ?
1  0 
Avatar de adiGuba
Expert éminent sénior https://www.developpez.com
Le 02/02/2010 à 14:38
Citation Envoyé par RunCodePhp Voir le message
Désolé mais je n'y vois pas là de quoi se réjouir, loin de là
Techniquement cela pourrait être très intéressant !

Pour le reste c'est une autre histoire, mais je vois mal l'intérêt qu'aurait Facebook à avoir la main mise sur PHP...

a++
1  0 
Avatar de metagoto
Membre éclairé https://www.developpez.com
Le 02/02/2010 à 16:07
Regardons ce qu'il s'est passé pour javascript: d'un simple interpreter (de Netscape en C) qui se contentait d'exécuter un abstract tree, on a aujourd'hui des trace optimizers, JIT compilers voir même de la génération de machine code (Google v8).

Le runtime de php se fait vieux. Le Zend engine 1 (au début des années 2000) a apporté une virtual machine (un exécuteur d'opcodes) mais depuis lors il n'y a rien eu de fondamentalement nouveau.

Là il semblerait que facebook fasse du JIT basé sur http://llvm.org (aux dernières nouvelles sur twitter). A suivre. Si tout ceci est vrai et au final rendu publique, alors c'est une excellente nouvelle!
1  0