米Facebook、PHPを高速にするJITコンパイラ「HipHop Virtual Machine」を発表
米Facebookは12月10日、PHPのJIT(Just-In-Time)コンパイラ「HipHop Virtual Machine(hhvm)」を発表した。PHPコードを高速に実行するためのランタイム環境で、LinuxとFreeBSDに対応する。現在Facebook内のテスト環境で採用されているという。オープンソースで開発されており、ライセンスはPHPおよびZendライセンス。
hhvmはPHPの高速化を目指してFacebook社内で開発された仮想マシン技術。Facebookは先にPHPコードをC++コードおよびバイナリに変換するHipHop interpreter(hphpi)やHipHop compiler(hphpc)を開発、採用していたが、hhvmはそれをさらに発展させたものとなる。
hphpiやhphpcはPHPコードを「AST」と呼ばれる中間コードに変換した後にC++コードに変換するという構造だったが、この場合静的なコード解析しか行えず、さまざまな限界があったという。そこで、JITコンパイラを用いて動的にPHPコードをマシンコードに変換する機構を開発したとのこと。
hhpvmの場合、PHPコードをASTコードに変換した後、独自の中間コードである「HHBC」に変換。このHHBCをhhpvmがx64コードに動的に変換して実行するという構造となる。
2010年に投入されたhphppiやhphpcにより、Facebookは、CPUの使用量を半減できたと報告していたが、hhvmを利用することでさらなる高速化が期待できるという。たとえばベンチマークではhphpiを利用した場合と比べ、1.6倍の高速化が見られたという。ただし、hphpiはPHPコード開発やメンテナンスのためのインタプリタ型実行環境であり、コンパイラ型のhphpcと比べ低速であるため、直接の比較はできない。実際、hhvmはhphpcと比較するとまだ0.6倍程度の速度しか出せていないとのこと。
開発チームではhhvmの完成度を「初期目標の90%」としている。現在、Facebook社内ではテスト環境でhhvmを利用しており、今後hphpiをリプレースする計画という。
米Facebook
http://www.facebook.com/
HipHop PHP
https://github.com/facebook/hiphop-php/wiki/