Ohjelmointi

Facebook keksii PHP-virtuaalikoneen

Sosiaalisen verkostoitumisen jättiläinen Facebook on ottanut uuden askeleen saadakseen PHP-Web-ohjelmointikielen toimimaan nopeammin. Yritys on kehittänyt PHP-virtuaalikoneen, jonka mukaan se pystyy suorittamaan kielen jopa yhdeksän kertaa nopeammin kuin suorittamalla PHP: n natiivisti suurissa järjestelmissä.

"Tavoitteenamme on saada PHP ajaa todella, todella nopeasti", sanoi Facebookin suunnittelupäällikkö Joel Pobar. Facebook on käyttänyt virtuaalikonetta, nimeltään HHVM (HipHop Virtual Machine), kaikilla palvelimillaan tämän vuoden alusta lähtien.

[Opi työskentelemään älykkäämmin, ei vaikeammalla. Kehittäjien selviytymisoppaassa on kaikki vinkit ja trendit, jotka ohjelmoijien on tiedettävä. Lataa PDF tänään! | Pysy ajan tasalla uusimmista kehittäjäuutisista Developer World -uutiskirjeellä. ]

Pobar keskusteli virtuaalikoneesta OSCONissa (O'Reilly Open Source Conference), joka pidetään tällä viikolla Portlandissa Oregonissa.

HHVM ei ole Facebookin ensimmäinen kokeilu PHP: n mukauttamiseksi nopeampaa käyttöä varten. PHP on tulkittu kieli, mikä tarkoittaa, että prosessori suorittaa lähdekoodin suoraan. Yleisesti ottaen tulkituilla kielillä kirjoitetut ohjelmat, kuten PHP, eivät yleensä toimi niin nopeasti kuin kielet, kuten C tai C ++, jotka on koottu etukäteen konekielen tavutunnukseksi. Facebook on pysynyt uskollisena PHP: lle, koska monet yrityksen palveluksessa olevat web-ohjelmoijat ymmärtävät sen laajasti.

Ylläpitääkseen kyltymätöntä käyttäjien kysyntää Facebook kuitenkin alun perin kehitti kääntäjän nimeltä HipHop, joka kääntäisi PHP-koodin C ++: ksi, joten se voitaisiin sitten koota etuajassa nopeamman suorituskyvyn saavuttamiseksi.

Vaikka Facebook nautti huomattavasti tämän ensimmäisen HipHop-version suorituskyvystä useita vuosia, se etsi muita tapoja nopeuttaa dynaamisesti luotujen verkkosivujen toimittamista noin miljardille käyttäjälle. "Sitä koskeva strategiamme oli menossa loppuun", Pobar myönsi.

HHVM on seuraava askel Facebookille. Noin kolmen vuoden kehitystyössä HHVM toimii itse asiassa samalla periaatteella kuin JVM (Java Virtual Machine). HHVM: llä on JIT (just-in-time) -kääntäjä, joka muuntaa ihmisen luettavissa olevan lähdekoodin koneellisesti luettavaksi tavukoodiksi tarvittaessa. (Aikaisempi HipHop, nimeltään HPHPc, on nyt eläkkeellä Facebookissa.)

Tämän JIT-lähestymistavan avulla virtuaalikone voi "tehdä älykkäämpiä päätöksiä ajon aikana", Pobar sanoi. Jos esimerkiksi kutsutaan MySQL-tietokantaan tietorivin lukemiseksi, HHVM voi lennossa selvittää minkä tyyppistä dataa se on, kuten kokonaisluku tai merkkijono. Sitten se voi luoda tai soittaa koodin lennossa, joka sopisi parhaiten tämän tyyppisen datan käsittelyyn.

Vanhan HipHopin avulla "parasta, mitä se voi tehdä, on analysoida koko Facebook-kooditietokanta, perustella se ja erikoistua sitten koodiin perustelujensa perusteella. Mutta se ei voi saada kaikkia perusteluja oikein. Koodipohjassa on osia, jotka et voi vain päättää tai perustella ", Pobar sanoi.

Pobar arvioi, että HHVM on noin kaksi kertaa nopeampi kuin HPHPc ja noin yhdeksän kertaa nopeampi kuin suoran PHP: n suorittaminen.

Facebook on lähettänyt HHVM-koodin GitHubiin toivoen, että muutkin käyttävät sitä myös PHP-verkkosivustojensa nopeuttamiseen.

HHVM on optimoitu käsittelemään erittäin suuria ja paljon käytettyjä PHP-kooditukia. Pobar arvioi, että HHVM: n käyttö vakiokokoisilla verkkosivustoilla, kuten Wordpress-blogia isännöivillä, parantaisi suorituskykyä vain noin viisinkertaiseksi.

"Jos otat jonkin PHP: n ja suoritat sen HipHopilla, suorittimen suoritusaika [ei] välttämättä ole suorituskykyä rajoittava tekijä. Mahdollisuudet ovat [järjestelmä viettää liian paljon aikaa keskusteluun tietokannan kanssa tai liian paljon aikaa puhumiseen [ ] memcache "-välimuistikerros, Pobar sanoi.

Joab Jackson käsittelee yritysohjelmistoja ja yleisiä teknologiauutisia Uutispalvelu. Seuraa Joabia Twitterissä osoitteessa @Joab_Jackson. Joabin sähköpostiosoite on [email protected]