FacebookはHipHop VMでPHPを9倍高速化

FacebookはPHPコードのパフォーマンスを改善し続けています。 2010年に、彼らはPHPをC ++に変換するHipHopコンパイラー(HPHPc)をリリースし、 eval()



ようなめったに使用されないPHP関数を犠牲にしましたが、パフォーマンスを改善しました。



Facebookは11億人のアクティブなオーディエンスを抱えており、Webアプリケーションの生産性を高めることに非常に興味を持っています。 多くのプログラマーはPHPに精通しているため、同社はこの「遅い」言語を放棄せず、可能な限り最適化することを決定しました。 ちなみに、Vkontakteは最近導入されたkPHPテクノロジーでも同じことを行います。



ただし、PHPコードをC ++で変換するための以前のアプローチは放棄する必要がありました。 代わりに、仮想マシン、環境、およびPHP 用HipHop VMまたは単にHHVMと呼ばれるPHP用JITコンパイラーがリリースされます。 ここでは、生産性を5〜9倍向上させることについて話しています。



5月、Facebookサーバーはほぼ完全にHPHPcからHHVMに切り替わりました。 Githubでは、Ubuntu 12.04、Debian 7(wheezy)、およびCentos 6.4 仮想マシンのソースコードと既製パッケージが利用可能です。 彼らは間もなくFreeBSD 9のパッケージを追加することを約束します。



O'Reilly Open Source Conference(OSCON)で最近語ったFacebookのスポークスマンによる 、Wordpressホスティングなどの標準的なWebサイトでは、生産性の向上はわずか5倍になります。 もう1つ、大きなPHPコードベースについて話している場合、HHVM仮想マシンが最適化されているため、ここで生産性を9倍に高めることができます。



「PHPコードを使用してHipHopで実行する場合、CPUはパフォーマンスの制限要因にはなりません」とFacebook開発マネージャーのJoel Pobar氏は述べています。 「むしろ、システムがデータベースのクエリやmemcacheとの通信により多くの時間を費やしていることがわかります。」



HHVMはJVM(Java仮想マシン)のパターンに従います。JITコンパイラーは、必要に応じてソースコードをマシンコードに変換し、マシンコードを生成する際にさまざまな要因を考慮することができます。 たとえば、MySQLデータベースへの呼び出しがある場合、JITコンパイラーはどのタイプのデータが呼び出されているかを調べ、その場で対応するコードを生成します。



All Articles