HHVM は Facebook から生まれました。Facebook の初期のコードの多くは PHP を使用して開発されました。しかし、ビジネスの急速な発展に伴い、PHP の実行効率がますます明らかな問題になってきました。実行効率を最適化するために、Facebook は 2008 年に PHP 実行エンジンである HipHop の使用を開始しました。これは元々、Facebook の大量の PHP コードを C++ に変換してパフォーマンスを向上させ、リソースを節約するために設計されました。 HipHop を使用した PHP コードのパフォーマンスは数倍向上しました。その後、Facebook は HipHop プラットフォームをオープンソース化し、徐々に現在の HHVM に発展させました。
HHVM が PHP の実行パフォーマンスを向上させる方法
HHVM が PHP のパフォーマンスを向上させる方法は、Zend エンジンを置き換えて PHP 中間ワードを生成および実行することです。 セクション コード ( HHVM は、独自の形式で中間バイトコードを生成します)。これは、JIT (Just In Time、ジャストインタイム コンパイルはソフトウェア最適化テクノロジであり、実行時にバイトコードがマシン コードにコンパイルされることを意味します) を通じてマシン コードに変換されます。実行。 Zend エンジンのデフォルトのアプローチでは、まずオペコードにコンパイルし、次にそれを 1 つずつ実行します。通常、各命令は C 言語レベルの関数に対応します。多数の繰り返しオペコード (純粋な PHP で書かれたコードと関数) を生成すると、Zend はこれらの C コードを 1 つずつ複数回実行します。 JIT が行うことは、さらに一歩進んで、実行効率を向上させるために、繰り返し実行される多数のバイトコードを実行時にマシンコードにコンパイルすることです。通常、JIT がトリガーされる条件は、コードまたは関数が複数回呼び出される場合です。
通常の PHP コードでは、変数の型を固定できないため、型を決定するためのロジック コードを追加する必要があります。このような PHP コードCPU の実行に影響を与えず、最適化されています。したがって、HHVM は通常、変数の型を固定して仮想マシンのコンパイルと実行を容易にするために、Hack 記述メソッド (特定の機能と互換性を持たせるために追加された追加の技術コード) を備えた PHP コードを使用して「連携」する必要があります。 PHP はすべての型を 1 つの形式で収容することを追求しますが、Hack は収容されるすべてのものを特定の型でマークできます。
PHP コードのハック記述の例:
上記の例では、PHP コードは次のとおりです。主に使用される変数の型を追加しました。 Hack ライティングの全体的な方向性は、これまでの「動的」な書き込み方法を、HHVM と連携する「静的」な書き込み方法に変更することです。
HHVM はそのパフォーマンスの高さから大きな注目を集めており、一部の一流インターネット企業も追随し始めています。純粋な言語の実行パフォーマンス テストの結果から判断すると、HHVM は開発中の PHP7 バージョンよりもはるかに優れています。
ただし、特定のビジネス シナリオの観点から見ると、WordPress オープンソース ブログの結果では、HHVM と PHP7 の間のギャップはそれほど大きくありません。ホームページはテスト シナリオとして使用されますが、現在のギャップは明らかではありません。
ただし、利用可能な技術ソリューションから判断すると、現在の HHVM の方がわずかに優れています。ただし、HHVM の展開とアプリケーションにはいくつかの問題があります。