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コンパイラーはどのタイプのデータが呼び出されているかを調べ、その場で対応するコードを生成します。