Programiranje

Facebook je izumil navidezni stroj PHP

Velikan socialnih mrež Facebook je naredil še en korak k hitrejšemu delovanju programskega jezika PHP. Podjetje je razvilo navidezni stroj PHP, za katerega pravi, da zna jezik izvajati kar devetkrat hitreje kot zagon PHP v velikih sistemih.

"Naš cilj je, da PHP deluje resnično zelo hitro," je povedal Joel Pobar, vodja Facebook inženiringa. Facebook uporablja virtualni stroj, imenovan HHVM (HipHop Virtual Machine), na vseh svojih strežnikih že od začetka tega leta.

[Spoznajte, kako delati pametneje, ne težje, z opisom vseh nasvetov in trendov, ki jih morajo programerji poznati v vodniku za preživetje razvijalcev. Prenesite PDF danes! | Bodite na tekočem z najnovejšimi novicami za razvijalce s časopisom Developer World. ]

Pobar je razpravljal o virtualnem stroju na konferenci OSCON (O'Reilly Open Source Conference), ki je bila ta teden v Portlandu v Oregonu.

HHVM ni prvi poskus Facebooka pri prilagajanju PHP za hitrejšo uporabo. PHP je interpretiran jezik, kar pomeni, da izvorno kodo izvaja procesor neposredno. Na splošno se programi, napisani v interpretiranih jezikih, kot je PHP, običajno ne izvajajo tako hitro kot jeziki, kot sta C ali C ++, ki so bili predhodno zbrani v bajtno kodo strojnega jezika. Facebook je ostal zvest PHP, ker ga mnogi spletni programerji, ki delajo v podjetju, dobro razumejo.

Da bi bil v koraku z nenasitnim povpraševanjem uporabnikov, pa je Facebook prvotno zasnoval prevajalnik, imenovan HipHop, ki bi PHP kodo prevedel v jezik C ++, zato bi ga lahko predčasno sestavil za hitrejše delovanje.

Facebook je sicer že nekaj let užival v znatnem povečanju zmogljivosti te prve različice HipHop-a, vendar je iskal druge načine, kako pospešiti dostavo dinamično ustvarjenih spletnih strani do približno milijarde uporabnikov. "Naša strategija uspešnosti se bo izkoristila," je priznal Pobar.

HHVM je naslednji korak za Facebook. HHVM se razvija približno tri leta in dejansko deluje po enakem principu kot JVM (Java Virtual Machine). HHVM ima JIT (just-in-time) prevajalnik, ki pretvori človeško berljivo izvorno kodo v strojno berljivo bajtno kodo, kadar je to potrebno. (Prejšnji HipHop, preimenovan v HPHPc, je zdaj umaknjen iz Facebooka.)

Ta pristop JIT omogoča virtualnemu stroju, da "pametneje odloča med izvajanjem," je dejal Pobar. Če na primer pokličete bazo podatkov MySQL, da prebere vrsto podatkov, lahko HHVM sproti ugotovi, za katero vrsto podatkov gre, na primer za celo število ali niz. Nato lahko sproti generira ali pokliče kodo, ki bi bila najprimernejša za obdelavo te vrste podatkov.

Pri starem HipHopu "je najbolje, da analizira celotno kodno bazo Facebooka, jo utemelji in nato specializira kodo na podlagi njenih razlogov. Vendar ne more vsega utemeljiti pravilno. Obstajajo deli osnove kode, ki ne morete preprosto sklepati ali sklepati, "je dejal Pobar.

Pobar je ocenil, da je HHVM približno dvakrat hitrejši od HPHPc in približno devetkrat hitrejši od naravnost PHP.

Facebook je kodo za HHVM objavil na GitHub-u z upanjem, da jo bodo drugi uporabili tudi za pospešitev svojih spletnih strani PHP.

HHVM je optimiziran za obdelavo zelo velikih in pogosto uporabljenih PHP kodnih baz. Pobar je menil, da bi uporaba HHVM za spletna mesta standardne velikosti, na primer za gostovanje spletnega dnevnika Wordpress, pridobila le približno petkratno izboljšanje učinkovitosti.

"Če vzamete nekaj PHP in ga zaženete na HipHop, čas izvajanja CPU [morda] ni omejevalni dejavnik za delovanje. Verjetno je, da [sistem] porablja preveč časa v pogovoru z bazo podatkov ali preveč časa v pogovoru z [ sloj predpomnjenja] memcache ", je dejal Pobar.

Joab Jackson pokriva podjetniško programsko opremo in splošne novice o tehnologiji Novinarska služba. Sledite Joabu na Twitterju na @Joab_Jackson. Joabov elektronski naslov je [email protected]

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