Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster -> FAQ PHP, Cours langage et Sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
Vieux 01/02/2010, 23h45   #1
Membre émérite
 
Avatar de Doksuri
 
Nom : Tiger Scott
Date d'inscription: juin 2006
Localisation: 127.0.0.1/Localhost/::1
Âge: 40
Messages: 776
Par défaut Facebook dévoile sa ré-écriture de PHP, HipHop traduit PHP en C++ puis le compile avec g++

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 :

Citation:
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 !
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 00h23   #2
Membre expérimenté
 
Avatar de metagoto
 
Date d'inscription: juin 2009
Messages: 521
Par défaut

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.
__________________
custom blog
metagoto est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 11h40   #3
Membre du Club
 
Avatar de albedo0
 
Date d'inscription: février 2007
Localisation: Lyon
Messages: 82
Par défaut

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 ?
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 13h26   #4
Membre éprouvé
 
Avatar de RunCodePhp
 
Date d'inscription: janvier 2010
Localisation: Ile De La Réunion
Messages: 403
Par défaut

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.
__________________
Win XP | WampServer 2.0 | Apache 2.2.11 | Php 5.3.0 | MySQL 5.1.36
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 13h44   #5
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Date d'inscription: avril 2002
Messages: 10 416
Par défaut

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++
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 13h48   #6
Rédacteur/Modérateur
 
Avatar de Thes32
 
Date d'inscription: décembre 2006
Localisation: Le pays imaginaire
Messages: 1 473
Par défaut

+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.
__________________
Etapes Pour mieux se servir du forum:

1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles.

Nix>_Rien n'est plus pratique que la théorie

Thes32 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 14h08   #7
Membre éprouvé
 
Avatar de RunCodePhp
 
Date d'inscription: janvier 2010
Localisation: Ile De La Réunion
Messages: 403
Par défaut

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à
__________________
Win XP | WampServer 2.0 | Apache 2.2.11 | Php 5.3.0 | MySQL 5.1.36
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Dernière modification par RunCodePhp ; 02/02/2010 à 14h19.
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 14h11   #8
Membre émérite
 
Avatar de Doksuri
 
Nom : Tiger Scott
Date d'inscription: juin 2006
Localisation: 127.0.0.1/Localhost/::1
Âge: 40
Messages: 776
Par défaut

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
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 14h18   #9
Responsable Livres & PHP
 
Avatar de RideKick
 
Date d'inscription: septembre 2006
Localisation: 01
Messages: 6 016
Par défaut

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 ?
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 14h38   #10
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Date d'inscription: avril 2002
Messages: 10 416
Par défaut

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++
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 16h07   #11
Membre expérimenté
 
Avatar de metagoto
 
Date d'inscription: juin 2009
Messages: 521
Par défaut

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!
__________________
custom blog
metagoto est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 18h43   #12
Membre expérimenté
 
Avatar de metagoto
 
Date d'inscription: juin 2009
Messages: 521
Par défaut

HipHop for PHP: Move Fast
http://developers.facebook.com/news....og=1&story=358

Citation:
HipHop for PHP isn't technically a compiler itself. Rather it is a source code transformer. HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it.
__________________
custom blog
metagoto est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 22h19   #13
Rédacteur
 
Date d'inscription: août 2006
Localisation: Dublin
Âge: 25
Messages: 285
Par défaut Source facebook

J'ai trouvé cet article sur l'un des espaces Facebook Developer.

http://developers.facebook.com/news....og=1&story=358

Il semblerait que l'amélioration des performances d'après le développeur qui en parle soit de 50% en moyenne.

Pour le principe, c'est un convertisseur de code php en code C++. Ce code est ensuite compilé par la suite par G++.

Le projet fait 300.000 lignes et possède 5000 tests unitaires. Il semblerait qu'il soit utilisé depuis 6 mois et est utilisé pour répondre à 90% des requetes sur facebook.

Les moins, certaines fonctions sont inaccessibles comme eval. Il n'y a pas d'autres exemples.

Ca a l'air d'etre un beau boulot. Pas de précision sur la license de release du code.
Phelim est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 22h25   #14
Nouveau membre du Club
 
Date d'inscription: octobre 2006
Messages: 76
Par défaut

Citation:
Envoyé par Phelim Voir le message

Ca a l'air d'etre un beau boulot. Pas de précision sur la license de release du code.
Il semblerait que ça soit la même licence que pour PHP d'après ce que j'ai compris dans la page facebook.
Molos est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/02/2010, 22h27   #15
Rédacteur
 
Date d'inscription: août 2006
Localisation: Dublin
Âge: 25
Messages: 285
Par défaut

Effectivement, j'avais raté ce passage :

Citation:
All of this will be released this evening on GitHub under the open source PHP license.
Phelim est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 02h11   #16
Chroniqueuse Actualités
 
Avatar de Katleen Erna
 
Date d'inscription: juillet 2009
Localisation: Paris
Messages: 587
Par défaut

Mise à jour du 03.02.2010
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 à 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 compilateur 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 compilateur 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 exécute 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 bien moins gourmand en ressources système.

Dernière modification par Caro-Line ; 03/02/2010 à 09h54. Motif: co
Katleen Erna est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 02h36   #17
Responsable technique
 
Avatar de Anomaly
 
Date d'inscription: juin 2003
Messages: 5 171
Par défaut

Citation:
et en sacrifie certaines fonctionnalités peu utilisées, comme eval(), pour de meilleures performances
Je ne sais pas si eval() est une fonction si peu utilisée que ça (le code source de notre forum en est rempli ), mais il est parfaitement compréhensible que cette fonction ait été exclue. Après tout cela consisterait ni plus ni moins qu'à inclure un interpréteur PHP dans le code compilé.

En tout cas je trouve que c'est une grande avancée. Merci pour la mise en open source du projet de PHP compilé.
__________________
Responsable technique forum & site
Anomaly est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 02h55   #18
Nouveau membre du Club
 
Date d'inscription: juillet 2005
Messages: 58
Par défaut

Citation:
Envoyé par Anomaly Voir le message
Je ne sais pas si eval() est une fonction si peu utilisée que ça
Depuis des années que je programme en PHP, je n'ai jamais eu besoin d'utiliser un eval() et des projets de grandes envergures comme le Zend Framework n'y font pas une seule fois appel.

Je ne sais plus si je l'ai entendu lors d'une discussion entre développeurs ou lu quelque part, mais pour moi à cette fonction reste attachée une sentence : "eval = code de bourin" (désolé pour le forum )

Donc personnellement, m'en passer ne me gênera pas, alors que faire gagner 50% de performances à mes futures applications m'intéresse plus que fortement :]
Folken Laëneck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 06h03   #19
Nouveau membre du Club
 
Date d'inscription: septembre 2008
Localisation: Alsace
Âge: 40
Messages: 56
Par défaut

Intéressant.

Dernière modification par Caro-Line ; 03/02/2010 à 09h55. Motif: corrections effectuées merci
dvdbly est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 07h04   #20
Membre éprouvé
 
Avatar de RunCodePhp
 
Date d'inscription: janvier 2010
Localisation: Ile De La Réunion
Messages: 403
Par défaut

Mais concrètement comment les choses se passent, parce que là ça me dépasse un peu

Est ce que tout ceci sera par exemple intégré dans le moteur (si on peu dire ainsi) de Php ? ce qui sous entend qu'une prochaine version l'intègrera.

Ou est ce une sorte de package additionnel (si on peu dire) qui s'occuperait de compiler le code ?
En gros, ici ce sera l'utilisateur qui décide d'utiliser ou pas ce "package".

Aussi, est ce que cela compile automatiquement ou est une opération manuel après avoir codé ?

Quand est il du coté des hébergeurs ?
C'est très prématuré j'en conviens, mais quel serait le scénario que l'on pourrait voir à l'avenir ?
Pourrait on voir des offres du genre :
- Php version interpréteur (mode actuel)
- Php version compilée (option HipHop)
Ou cela sera t-il possible uniquement sur des serveurs dédiés et c'est le client qui choisira ou pas d'intégrer le mode compilateur.

Ou alors toutes les versions de Php futures seront d'offices des versions "compilées" ?


Mon discourt est très certainement flou, voir absurde, mais pouvez décrire un peu comment les choses se dérouleraient ? (avec des mots simples )

Merci pour vos éclaircissement
__________________
Win XP | WampServer 2.0 | Apache 2.2.11 | Php 5.3.0 | MySQL 5.1.36
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Dernière modification par Caro-Line ; 03/02/2010 à 09h55. Motif: HS suite modifications
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Actualité déjà publiée

Précédent   Forum des professionnels en informatique > PHP > Langage



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 02h37.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.