Så er det officielt: Facebook forvandler PHP til C++ med Hiphop

Hiphop for PHP er Facebooks nye vidundermiddel til at omdanne sløv PHP-kode til lynhurtig C++. Det betyder omkring 50 procent mindre CPU-tid på Facebooks webservere.

Rygterne om en særlig optimeret udgave af PHP udviklet af Facebook har svirret de seneste par dage, og nu har den sociale hjemmeside bekræftet, at der er noget om snakken.

Hiphop for PHP hedder Facebooks nye værktøj, der dog hverken er en ny udgave af PHP eller en compiler i sig selv. Derimod er det et værktøj til at omdanne PHP-kode til optimeret C++-kode, som så kan oversættes med en C++-compiler og dermed give langt hurtigere og mindre hukommelseskrævende kode.

Dermed kan Facebooks udviklere fortsætte med at skrive i PHP, hvilket er noget nemmere at gå til, og samtidig opnå kraftige forbedringer af den sociale hjemmesides ydelse.

Facebook har over 400 milliarder PHP-baserede sidevisninger om måneden.

»Med Hiphop har vi reduceret CPU-forbruget på vores webservere med i gennemsnit omkring 50 procent, afhængigt af siden. Mindre CPU-forbrug betyder færre servere, hvilket igen betyder mindre overhead,« skriver senior server engineer Haipeng Zhao på hjemmesiden Facebook Developers.

Hiphop for PHP udgøres af omkring 300.000 C++-linjer, og Facebook finder det selv så anvendeligt, at værktøjet er frigivet som open source-kode.

PHP hurtig til udvikling, men kører for langsomt
PHP er et scripting-sprog i samme familie som eksempelvis Python og Perl, og det er derfor nemt for udviklere at komme hurtigt udover stepperne, når der skal skrives ny kode.

Det har Facebook-udviklerne hidtil haft stor gavn af.

»I løbet af de seneste seks år har vi været i stand til at opnå meget takket været det hurtige udviklingstempo, PHP muliggør. Som programmeringssprog er PHP simpelt at lære, simpelt at skrive, simpelt at læse og simpelt at debugge,« skriver Haipeng Zhao.

Men Facebook har siden 2007 undersøgt mulighederne for at presse bedre ydelse ud af Facebooks kæmpe underskov af PHP-kode. Det har været særligt udfordrende, fordi de fleste af Facebooks hjemmesider udgøres af en Facebook-bruger, der er logget ind med sine egne indstillinger.

»Når du går ind og ser din Facebook-side, skal vi slå alle dine venner op, finde deres mest relevante opdateringer frem, filtrere resultaterne baseret på dine privacy-indstillinger, indsætte kommentarer, fotos og alle de andre data, folk holder af ved Facebook. Alt sammen på under ét sekund,« skriver Haipeng Zhao.

I praksis omdanner Hiphop PHP-kildekoden til C++-kode, som så efterfølgende oversættes med GNU-compileren g++. Samtidig udelades sjældent brugte features - eksempelvis funktionen eval() - fra den omdannede kode for igen at give bedre ydelse.

»Den største udfordring var at bygge bro mellem forskellene på PHP og C++. PHP er et scripting-sprog med dynamisk og svag typing, mens C++ er et oversat sprog med statisk typing,« skriver Haipeng Zhao.

Hiphop indeholder også en ny implementering af PHP's runtime-system og omskrevne udgaver af flere gængse PHP-udvidelser.

Ifølge seniorudvikleren har Hiphop for PHP været brugt det seneste halve år og bruges i øjeblikket til at levere mere end 90 procent af webtrafikken på Facebook.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Lars Tørnes Hansen

Ja det lader til at være tilfældet:

HipHop for PHP transforms PHP source code into highly optimized C++. It was developed by Facebook and was released as open source in early 2010.

HipHop transforms your PHP source code into highly optimized C++ and then compiles it with g++ to build binary files. You keep coding in simpler PHP, then HipHop executes your source code in a semantically equivalent manner and sacrifices some rarely used features – such as eval() – in exchange for improved performance.

Facebook sees about a 50% reduction in CPU usage when serving equal amounts of Web traffic when compared to Apache and PHP. Facebook’s API tier can serve twice the traffic using 30% less CPU.

Citatet er fra: http://wiki.github.com/facebook/hiphop-php/

  • 0
  • 0
Log ind eller Opret konto for at kommentere