Virtuální stroj HipHop od Facebooku zrychluje běh PHP

29. 7. 2013

Sdílet

Facebook učinil další krok ve směru zrychlování programů napsaných v PHP, vyvinul virtuální stroj HipHop Virtual Machine (HHVM) poskytující běhové prostředí tomuto programovacímu jazyku. PHP je jazyk primárně určený pro tvorbu webových aplikací, jako je například sama největší sociální síť. Vývojáři tak navazují na svou předchozí snahu zrychlit kód, kdy před dvěma roky vyvinuli technologii HipHop for PHP, překladač zdrojového kódu PHP do vysoce optimalizovaného kódu C++, který byl dále kompilován open-source překladačem g++.

PHP je interpretovaný programovací jazyk, který ke svému běhu vyžaduje další program obecně zvaný jako interpret. Ten čte řádky kódu zapsané programátorem a postupně je vykonává (vyvolává příslušné instrukce procesoru). Interpret se za běhu musí také starat o různé kontroly správnosti kódu, což celé provádění programu zpomaluje. Proto jsou interpretované jazyky obecně pomalejší, než jazyky kompilované (jako např. C/C++).

Dle slov vývojářů pracuje virtuální stroj HHVM na stejném principu, jako virtuální stroj JVM jazyka Java a rovněž využívá JIT (justi-in-time) kompilátor. Programovací kód přeložený do tzv. bajtkódu, mezikódu představujícího přechod mezi člověku a stroji srozumitelnému kódu, je pomocí JIT (just-in-time) kompilátoru za běhu překládán do strojového kódu, přičemž je již přeložený kód uchováván v dočasné paměti tak, aby mohl být při příštím volání ihned spuštěn.

Virtuální stroj navíc může pro provádění daného úseku kódu vybrat ten nejvhodnější způsob řešení. Například při vyvolání dotazu pro přečtení řádky dat z databáze MySQL může HVMM nejprve ověřit, jaký typ dat program žádá (číslo, řetězec znaků, apod.), a následně generovat optimální strojový kód.

Dle vývojářů je díky HHVM vykonávání PHP až devětkrát rychlejší ve srovnání s nativním PHP interpretem. Kód HHVM Facebook zveřejnil prostřednictvím repozitáře GitHub, přičemž je implementace určena pro linuxové distribuce Ubuntu, Debian, CentOS a pro FreeBSD.

 

Zdroj: Facebook.com/hphpGithub.com/Facebook/hiphop-php/wiki

Našli jste v článku chybu?