Programmering

Facebook oppfinner en virtuell PHP-maskin

Sosiale nettverksgiganten Facebook har tatt et nytt skritt for å få PHP Web-programmeringsspråket til å kjøre raskere. Selskapet har utviklet en virtuell PHP-maskin som de sier kan utføre språket så mye som ni ganger så raskt som å kjøre PHP naturlig på store systemer.

"Målet vårt er å få PHP til å kjøre veldig, veldig raskt," sa Joel Pobar, en Facebook-ingeniørleder. Facebook har brukt den virtuelle maskinen, kalt HHVM (HipHop Virtual Machine), på tvers av alle serverne siden tidligere i år.

[Lær hvordan du kan jobbe smartere, ikke vanskeligere med en oversikt over alle tipsene og trendene som programmerere trenger å vite i utviklerens overlevelsesguide. Last ned PDF i dag! | Hold deg oppdatert på de siste utviklernyhetene med 's Developer World-nyhetsbrev. ]

Pobar diskuterte den virtuelle maskinen på OSCON (O'Reilly Open Source Conference) som ble avholdt denne uken i Portland, Oregon.

HHVM er ikke Facebooks første angrep med å tilpasse PHP for raskere bruk. PHP er et tolket språk, noe som betyr at kildekoden utføres av prosessoren direkte. Generelt sett har programmer skrevet på tolket språk som PHP en tendens til ikke å kjøre så raskt som språk, for eksempel C eller C ++, som på forhånd er samlet til maskinspråk-byte-kode. Facebook har vært lojal mot PHP fordi det er mye forstått av mange av webprogrammererne som jobber for selskapet.

For å holde tritt med den umettelige brukerbehovet, utviklet imidlertid Facebook opprinnelig en kompilator, kalt HipHop, som ville oversette PHP-kode til C ++, så den kunne deretter kompileres på forhånd for raskere ytelse.

Mens Facebook hadde mange ytelsesgevinster av denne første versjonen av HipHop i flere år, søkte den andre måter å få raskere levering av de dynamisk opprettede websidene til sine milliarder brukere. "Vår ytelsesstrategi for det kom til å gå ut," innrømmet Pobar.

HHVM er neste trinn for Facebook. Under utvikling i omtrent tre år fungerer HHVM faktisk på samme prinsipp som JVM (Java Virtual Machine). HHVM har en JIT (just-in-time) kompilator som konverterer den menneskelige lesbare kildekoden til maskinlesbar bytekode når det er nødvendig. (Den forrige HipHop, omdøpt til HPHPc, har nå blitt pensjonert i Facebook.)

Denne JIT-tilnærmingen gjør det mulig for den virtuelle maskinen å "ta smartere beslutninger i løpetid," sa Pobar. For eksempel, hvis det blir ringt til MySQL-databasen for å lese en rad med data, kan HHVM i farten finne ut hvilken type data det er, for eksempel et heltall eller en streng. Det kan da generere eller ringe kode på farten som vil være best egnet for håndtering av denne spesifikke typen data.

Med den gamle HipHop, "er det beste den kan gjøre å analysere hele Facebook-kodebasen, resonnere om det og deretter spesialisere koden basert på resonnementet. Men det kan ikke få all resonnementet riktig. Det er deler av kodebasen som du kan ikke bare slutte om eller resonnere om, "sa Pobar.

Pobar estimerte at HHVM er omtrent dobbelt så raskt som HPHPc var, og omtrent ni ganger så raskt som å kjøre rett PHP.

Facebook har lagt ut koden for HHVM på GitHub, med håp om at andre også vil bruke den til å øke hastigheten på sine PHP-nettsteder.

HHVM er optimalisert for håndtering av svært store og mye brukte PHP-kodebaser. Pobar regnet med at bruk av HHVM for nettsteder i standard størrelse, for eksempel en som er vert for en Wordpress-blogg, kun ville oppnå en femdobling av ytelsesforbedringen.

"Hvis du tar litt PHP og kjører den på HipHop, kan det hende at CPU-utførelsestiden [ikke] er den begrensende faktoren for ytelse. Sjansen er at [systemet bruker] for mye tid på å snakke til databasen eller bruke for mye tid på å snakke med memcache-cachelaget, sa Pobar.

Joab Jackson dekker bedriftsprogramvare og generelle teknologiske nyheter for Nyhetstjenesten. Følg Joab på Twitter på @Joab_Jackson. Joabs e-postadresse er [email protected]

$config[zx-auto] not found$config[zx-overlay] not found