Programmering

Facebook opfinder en virtuel PHP-maskine

Den sociale netværksgigant Facebook har taget endnu et skridt til at få PHP Web-programmeringssproget til at køre hurtigere. Virksomheden har udviklet en virtuel PHP-maskine, som den siger kan udføre sproget så meget som ni gange så hurtigt som at køre PHP indbygget på store systemer.

"Vores mål er at få PHP til at køre rigtig hurtigt," sagde Joel Pobar, en Facebook-ingeniørchef. Facebook har brugt den virtuelle maskine, kaldet HHVM (HipHop Virtual Machine), på tværs af alle sine servere siden tidligere i år.

[Lær, hvordan du arbejder smartere, ikke hårdere med sin sammenfatning af alle de tip og trends, som programmører har brug for at vide i Developers 'Survival Guide. Download PDF i dag! | Hold dig opdateret med de seneste udviklernyheder med 's Developer World-nyhedsbrev. ]

Pobar diskuterede den virtuelle maskine på OSCON (O'Reilly Open Source Conference), der afholdes i denne uge i Portland, Oregon.

HHVM er ikke Facebooks første strejf i at tilpasse PHP til hurtigere brug. PHP er et fortolket sprog, hvilket betyder, at kildekoden udføres direkte af processoren. Generelt har programmer, der er skrevet på fortolkede sprog, såsom PHP, en tendens til ikke at køre så hurtigt som sprog, såsom C eller C ++, der på forhånd er blevet kompileret til maskinsprog-byte-kode. Facebook er forblevet loyalt over for PHP, fordi det er bredt forstået af mange af de web-programmører, der arbejder for virksomheden.

For at holde trit med den umættelige brugerbehov udtænkte imidlertid Facebook oprindeligt en compiler, kaldet HipHop, der ville oversætte PHP-kode til C ++, så den kunne derefter kompileres på forhånd for hurtigere ydeevne.

Mens Facebook har haft betydelige præstationsgevinster af denne første version af HipHop i flere år, søgte det andre måder at fremskynde leveringen af ​​de dynamisk oprettede websider til sine omkring en milliard brugere. "Vores præstationsstrategi for det skulle udnytte," indrømmede Pobar.

HHVM er det næste trin for Facebook. Under udvikling i cirka tre år fungerer HHVM faktisk på det samme princip som JVM (Java Virtual Machine). HHVM har en JIT (just-in-time) kompilator, der konverterer den menneskelige læsbare kildekode til maskinlæsbar bytekode, når det er nødvendigt. (Den tidligere HipHop, omdøbt til HPHPc, er nu blevet pensioneret inden for Facebook.)

Denne JIT-tilgang gør det muligt for den virtuelle maskine at "tage smartere beslutninger ved kørsel," sagde Pobar. For eksempel, hvis der foretages et opkald til MySQL-databasen for at læse en række data, kan HHVM straks finde ud af, hvilken type data det er, såsom et heltal eller en streng. Derefter kan det generere eller ringe til kode på farten, der er bedst egnet til håndtering af denne særlige datatype.

Med den gamle HipHop er "det bedste, det kan gøre, at analysere hele Facebook-kodebasen, begrunde det og derefter specialisere koden på baggrund af dens ræsonnement. Men det kan ikke få hele ræsonnementet rigtigt. Der er dele af kodebasen, som du kan ikke blot udlede om eller begrunde, ”sagde Pobar.

Pobar vurderede, at HHVM er ca. dobbelt så hurtig som HPHPc var, og ca. ni gange så hurtig som at køre lige PHP.

Facebook har sendt koden til HHVM på GitHub med håb om, at andre også vil bruge den til at fremskynde deres PHP-websteder.

HHVM er optimeret til håndtering af meget store og stærkt anvendte PHP-kodebaser. Pobar regnede med, at brugen af ​​HHVM til websteder i standardstørrelse, såsom en, der er vært for en Wordpress-blog, kun ville vinde ca. en femdoblet præstationsforbedring.

"Hvis du tager noget PHP og kører det på HipHop, er CPU-udførelsestiden [muligvis] ikke den begrænsende faktor for ydeevne. Chancerne er, at [systemet] bruger for meget tid på at tale til databasen eller bruge for tid på at tale med [ memcache "cachelaget, sagde Pobar.

Joab Jackson dækker virksomhedssoftware og generelle teknologiske nyheder til Nyhedstjenesten. Følg Joab på Twitter på @Joab_Jackson. Joabs e-mail-adresse er [email protected]