Facebook kompiluje PHP pomocí virtuálních strojů

Společnost přerušila práce na konverzi aplikací PHP do jazyka C++ a místo toho sází na dynamicky generovaný bajtový kód.

Facebook kompiluje PHP pomocí virtuálních strojů


Gigant současných sociálních sítí Facebook pokračuje ve svém úsilí o zrychlení PHP, jednoho ze základních programovacích jazyků pro vytváření komplexních webů. Společnost proto vyvinula virtuální stroj PHP, na kterém jazyk běží až devětkrát rychleji, než je jeho nativní rychlost.

PHP je skriptovací jazyk běžící na straně serverů, který byl vyvinut pro webové aplikace, ale je používán i jako obecný programovací jazyk a nyní je nainstalován na více než 244 milionech webů a 2,1 milionu webových serverů.

Podle Joela Pobara, manažera vývoje u Facebooku, je tento virtuální stroj, interně označený jako HHVM (HipHop Virtual Machine), od tohoto roku nasazen na všech serverech Facebooku. Pobar to uvedl na konferenci OSCON (O'Reilly Open Source Conference), která se konala tento týden v Oregonu.

HHVM není prvním výsledkem snahy Facebooku o optimalizaci PHP. Protože PHP je interpretovaný programovací jazyk, znamená to, že je procesorem prováděn příkaz po příkazu zdrojového kódu. Zatímco v případě kompilovaných jazyků je zdrojový kód programátorem převeden přímo do spustitelného strojového kódu. Díky tomu programy napsané v C či C++ a zkompilované pro daný procesor většinou běží výrazně rychleji.

Facebook zůstal PHP věrný, protože ho používá většina jeho programátorů a je v něm napsaná většina jeho systémů. Aby se vyrovnal s nároky neustále narůstajícího počtu uživatelů a odpovídajícího vytížení jeho serverů, pokusil se vytvořit kompilátor, interně nazvaný HipHop a později HPHPc, který by převáděl zdrojový kód PHP do jazyka C++ (který by již bylo možné zkompilovat).

HHVM je dalším výsledkem tříletého vývoje. Pracuje na stejném principu jako programovací platforma Java. Kompilátor JIT (Just in time) vytváří spustitelný strojový kód v okamžiku potřeby. Vývojáři Facebooku odhadují, že HHVM je dvakrát rychlejší než HPHPc a devětkrát rychlejší než přímo běžící PHP. Přístup JIT vede k chytřejšímu rozhodování virtuálního stroje v okamžiku běhu, který se může rozhodnout, jaké proměnné použije a jaký typ kódu tedy bude generovat.

Zdrojový kód HHVM byl umístěn na GitHubu, takže jej mohou vyzkoušet či zdarma využívat všichni zájemci. Optimalizován je ovšem především pro velmi velká řešení napsaná v PHP, malé hostovací servery nabízející například blogy ve Wordpressu podle Pobara dosáhnou „horších“ výsledků, přibližně pětinásobného zrychlení.

„U řady řešení PHP nemusí být výsledná rychlost limitovaná procesorem, systém může trávit příliš mnoho času komunikací s databází nebo s mechanismem vyrovnávací paměti a HipHop tady nemůže příliš pomoci,“ vysvětlil Pobar.

Úvodní foto: © Facebook










Komentáře