Hlavní navigace

Facebook uvolnil vlastní just-in-time PHP kompilátor

10. 12. 2011

Sdílet

Společnost opět vylepšila způsob, jakým zpracovává své webové stránky vytvořené v PHP.

Facebook v pátek na server GitHub umístil HipHop Virtual Machine (HHVM), vlastní just-in-time PHP kompilátor, který je prý o 60 % rychlejší než současný PHP interpreter a spotřebuje až o 90 % méně paměti. V současné době testují vývojáři HHVM ve zkušebním prostředí a připravují jeho uvedení do plného provozu. Facebook tak navázal na své dřívější snahy o rychlejší zpřístupnění PHP kódu koncovým uživatelům. V loňském roce vydal to, co nazval transformátorem PHP zdrojového kódu. Nástroj tehdy dostal název HipHop, takže novým kompilátorem Facebook jen pokračuje ve svém úsilí.

PHP je společně s JavaScriptem důležitou součástí sociální sítě Facebook. PHP aplikace však nemohou běžet tak rychle, jako programy napsané v plnohodnotných programovacích jazycích typu C++. HipHop proto převádí PHP rozšíření do vysoce optimalizovaného C++ kódu, čímž zvyšuje jejich rychlost. Společnost přestěhovala všechny své servery do HipHop v roce 2010, což jí prý pomohlo k nižší spotřebě výkonu CPU. Ve stejné době Facebook také dokončil vývoj interpreteru HPHPi, který vývojářům v PHP umožňuje spouštět jejich kódy bez kompilace. Výsledný kód je sice pomalejší, ale vývojářům zase HPHPi výrazně usnadnil práci.

V HHVM zkombinovali vývojáři rychlost kompilovaného jazyka s flexibilitou toho skriptového. „Dynamický překladač dokáže při běhu programu sledovat datové typy a generovat typově specializovaný strojový kód,“ vysvětluje na oficiálním blogu softwarový inženýr Jason Evans. HHVM také řeší vnitřní problém Facebooku. HPHPi a HipHop totiž nemají identickou jazykovou sémantiku. To znamená, že kód, který běží dobře v testovacím prostředí HPHPi, nemusí dobře fungovat i v HipHopu. Podle Evanse je ale na HHVM třeba udělat ještě hodně práce. Interpreter musí být doladěn pro produkční použití a hodně práce prý budou mít vývojáři také s pamětí.

Byl pro vás článek přínosný?