PHPのJITコンパイラ「HipHop Virtual Machine」、Facebookがオープンソースで公開
Facebookは10日、PHPを高速に実行する仮想マシン「HipHop Virtual Machine」(hhvm)を公開しました。
HipHop Virtual Machineは、PHPを高速に実行するためにPHPのコードをC/C++に変換してg++でコンパイルし、バイナリコードにするHiphop compiler(hphpc)と、PHPのインタプリタであるHipHop interpreter (hphpi)を組み合わせたもの。PHPのコードをダイナミックにバイナリコードへと変換することで、高速な実行を目指しています。
コンパイラと同等以上の実行速度へ
HipHopはFacebookが開発し、オープンソースとして公開しています。今回のHipHop Virtual Machineも、これらの開発の延長線上にあるものです。
Our experiences with hphpc led us to start experimenting with dynamic translation to native machine code, also known as just-in-time (JIT) compilation.
HipHop compilerでの経験が、JITコンパイルと呼ばれるダイナミックなネイティブコードへの変換を行う実験的な実装のスタートとなった。
現在、HipHop Virtual Machineの実行速度は、インタプリタに比べれば1.6倍速く、一方でコンパイラと比べると0.6倍程度とのこと。しかしいずれはコンパイラと同等以上の実行速度が出るとFacebookでは予想しているようです。
We expect hhvm to rapidly close the performance gap with hphpc-compiled binaries over the coming months as the dynamic translator stabilizes and matures. In fact, we predict that hhvm will eventually outperform statically compiled binaries in Facebook's production environment,
hphpcによってコンパイルされたバイナリとhhvmとの性能の差は、ダイナミックトランスレーターが安定し完成度が高まることで、数カ月程度で急速に縮まるでしょう。実際のところ、hhvmは最終的にはFacebookの実環境で稼働しているコンパイルされたバイナリよりも高速になると予想しています。
Facebookは今後、PHPの実行をすべてHipHop Virtual Machineへ移行することを計画しています。
プログラミング言語をダイナミックにネイティブコードへ変換することで高速な実行を実現するJITコンパイラは、Java VMや.NETなどで使われ、最近ではJavaScriptの実行系でも実装されはじめています。これがPHPへオープンソースとして適用されることで、ほかのサーバサイドのスクリプティング言語でも似たような動きが始まるかもしれません。