Facebook je izumio PHP virtualni stroj

Div društvenih mreža Facebook poduzeo je još jedan korak u bržem pokretanju programskog jezika PHP Web. Tvrtka je razvila PHP virtualni stroj za koji kaže da može izvršiti jezik čak devet puta brže nego što je PHP izvorno pokrenut na velikim sustavima.

"Cilj nam je PHP pokrenuti jako, jako brzo", rekao je Joel Pobar, Facebook menadžer inženjeringa. Facebook koristi virtualni stroj, nazvan HHVM (HipHop Virtual Machine), na svim svojim poslužiteljima od početka ove godine.

[Naučite kako raditi pametnije, a ne teže uz sažimanje svih savjeta i trendova koje programeri trebaju znati u Vodiču za preživljavanje programera. Preuzmite PDF danas! | Pratite najnovije vijesti za programere uz bilten Svijet programera. ]

Pobar je razgovarao o virtualnom stroju na OSCON-u (O'Reilly Open Source Conference) koji se ovog tjedna održavao u Portlandu u Oregonu.

HHVM nije prvi pokušaj Facebooka u prilagođavanju PHP-a za bržu upotrebu. PHP je interpretirani jezik, što znači da procesor izravno izvršava izvorni kod. Općenito govoreći, programi napisani na interpretiranim jezicima kao što je PHP obično se ne izvode tako brzo kao jezici, poput C ili C ++, koji su prethodno kompilirani u bajt kôd strojnog jezika. Facebook je ostao vjeran PHP-u jer ga mnogi web programeri koji rade za tvrtku dobro razumiju.

Međutim, kako bi išao u korak s nezasitnom potražnjom korisnika, Facebook je prvotno osmislio kompajler zvan HipHop koji bi PHP kôd preveo u C ++, pa bi se mogao sastaviti prije vremena radi bržih performansi.

Iako je Facebook nekoliko godina uživao u značajnom povećanju performansi ove prve verzije HipHopa, tražio je druge načine kako ubrzati isporuku dinamički stvorenih web stranica do svojih milijardu ili više korisnika. "Naša strategija izvedbe za to će se iskoristiti", priznao je Pobar.

HHVM je sljedeći korak za Facebook. U razvoju oko tri godine, HHVM zapravo radi na istom principu kao i JVM (Java virtualni stroj). HHVM ima JIT (just-in-time) kompajler koji pretvara ljudski čitljiv izvorni kod u strojno čitljivi bajt kôd kada je to potrebno. (Prethodni HipHop, preimenovan u HPHPc, sada je povučen iz Facebooka.)

Ovaj JIT pristup omogućuje virtualnom stroju da "donosi pametnije odluke tijekom izvođenja", rekao je Pobar. Na primjer, ako se uputi poziv MySQL bazi podataka radi čitanja reda podataka, HHVM može u hodu shvatiti o kojoj se vrsti podataka radi, kao što je cijeli broj ili niz. Tada može u letu generirati ili nazvati kod koji bi bio najprikladniji za rukovanje ovom određenom vrstom podataka.

Sa starim HipHop-om, "najbolje što može učiniti je analizirati cijelu Facebook bazu kodova, obrazložiti je, a zatim specijalizirati kôd na temelju svojih obrazloženja. Ali ne može sve argumentirati ispravno. Postoje dijelovi baze koda koji ne možete jednostavno zaključiti ili rasuđivati ​​", rekao je Pobar.

Pobar je procijenio da je HHVM otprilike dvostruko brži nego što je bio HPHPc i otprilike devet puta brži od istodobnog PHP-a.

Facebook je na GitHub objavio kôd za HHVM, s nadom da će ga i drugi koristiti za ubrzavanje njihovih PHP web stranica.

HHVM je optimiziran za rukovanje vrlo velikim i vrlo korištenim PHP bazama kodova. Pobar je računao da će korištenje HHVM-a za web stranice standardne veličine, poput one koja hostira Wordpress blog, dobiti samo približno peterostruko poboljšanje performansi.

"Ako uzmete malo PHP-a i pokrenete ga na HipHop-u, vrijeme izvršenja CPU-a [možda] neće biti ograničavajući faktor za izvedbu. Vjerojatno [sustav] troši previše vremena u razgovoru s bazom podataka ili troši previše vremena na razgovor s [ sloj za predmemoriranje] memcache ", rekao je Pobar.

Joab Jackson pokriva poslovnog softvera i općenito tehnologije razbijanje vijesti za The News Service . Slijedite Joaba na Twitteru na @Joab_Jackson. Joabova adresa e-pošte je [email protected]