FaceBook double les performances de PHP et sort un transcodeur
Par Didier Pulicani - Publié le
Je travaille dessus depuis 2 ansdé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.
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)