Programování

Facebook vynalézá virtuální stroj PHP

Sociální gigant Facebook učinil další krok k rychlejšímu běhu programovacího jazyka PHP Web. Společnost vyvinula virtuální stroj PHP, o kterém říká, že dokáže jazyk spustit až devětkrát rychleji než nativní běh PHP na velkých systémech.

„Naším cílem je zajistit, aby PHP běželo opravdu, opravdu rychle,“ řekl Joel Pobar, technický manažer Facebooku. Facebook používá virtuální stroj s názvem HHVM (HipHop Virtual Machine) na všech svých serverech od začátku tohoto roku.

[Naučte se, jak pracovat chytřeji, ne těžší, se shrnutím všech tipů a trendů, které programátoři potřebují znát v Průvodci přežitím vývojářů. Stáhněte si PDF ještě dnes! | Zůstaňte v kontaktu s nejnovějšími novinkami pro vývojáře pomocí bulletinu Developer World. ]

Pobar diskutoval o virtuálním stroji na konferenci OSCON (O'Reilly Open Source Conference) konané tento týden v Portlandu v Oregonu.

HHVM není prvním vpádem Facebooku do přizpůsobování PHP pro rychlejší použití. PHP je interpretovaný jazyk, což znamená, že zdrojový kód provádí procesor přímo. Obecně řečeno, programy napsané v interpretovaných jazycích, jako je PHP, nemají tendenci běžet tak rychle jako jazyky, jako je C nebo C ++, které byly předem zkompilovány do bajtového kódu strojového jazyka. Facebook zůstal loajální vůči PHP, protože je široce srozumitelný mnoha webovým programátorům, kteří pro společnost pracují.

Aby však držel krok s neukojitelnou poptávkou uživatelů, Facebook původně vymyslel kompilátor s názvem HipHop, který by překládal PHP kód do C ++, takže by jej bylo možné předem zkompilovat pro rychlejší výkon.

I když si Facebook už několik let užíval značný nárůst výkonu této první verze HipHop, hledal jiné způsoby, jak urychlit poskytování dynamicky vytvářených webových stránek své zhruba miliardě uživatelů. „Naše výkonnostní strategie se chystala využít,“ připustil Pobar.

HHVM je dalším krokem pro Facebook. HHVM, který se vyvíjí asi tři roky, ve skutečnosti funguje na stejném principu jako JVM (Java Virtual Machine). HHVM má kompilátor JIT (just-in-time), který v případě potřeby převede zdrojový kód čitelný člověkem na strojově čitelný bajtový kód. (Předchozí HipHop, přejmenovaný na HPHPc, byl nyní na Facebooku vyřazen.)

Tento přístup JIT umožňuje virtuálnímu stroji „dělat chytřejší rozhodnutí za běhu,“ řekl Pobar. Například pokud dojde k volání databáze MySQL za účelem čtení řady dat, může HHVM za běhu zjistit, o jaký typ dat jde, například celé číslo nebo řetězec. Pak může generovat nebo volat kód za běhu, který by byl nejvhodnější pro zpracování tohoto konkrétního typu dat.

Se starým HipHopem „to nejlepší, co může udělat, je analyzovat celou základnu kódů na Facebooku, zdůvodnit to a poté na základě svého uvažování specializovat kód. Nelze však správně využít všechny důvody. Existují části základny kódu, které nemůžete jednoduše odvodit nebo o tom uvažovat, “řekl Pobar.

Pobar odhadoval, že HHVM je asi dvakrát rychlejší než HPHPc a asi devětkrát rychlejší než běh přímo na PHP.

Facebook zveřejnil kód pro HHVM na GitHub s nadějí, že jej ostatní využijí také k urychlení svých webových stránek PHP.

HHVM je optimalizován pro práci s velmi velkými a velmi používanými databázemi kódů PHP. Pobar počítal s tím, že použití HHVM pro weby standardní velikosti, jako je například web, který hostí blog Wordpress, by získalo asi pětinásobné zlepšení výkonu.

„Pokud si vezmete nějaké PHP a spustíte ho na HipHopu, nemusí být doba výkonu CPU limitujícím faktorem výkonu. Je pravděpodobné, že [systém] tráví příliš mnoho času mluvením s databází nebo tráví příliš času mluvením s [ mezipaměťová vrstva] memcache, řekl Pobar.

Joab Jackson pokrývá nejnovější zprávy o podnikovém softwaru a obecných technologiích Zpravodajská služba. Sledujte Joaba na Twitteru na @Joab_Jackson. E-mailová adresa společnosti Joab je [email protected]