開発コストを考慮すると、スクリプト言語は避けられないトレンドです。ここでの問題は、Java の JIT コンパイラなど、インタープリタ言語をコンパイル言語に変換するコンバータですが、Facebook が最近オープンソース化した JIT PHP コンパイラと仮想マシンがこの可能性を提供できると思いますか。

WBOY
リリース: 2016-06-17 08:32:30
オリジナル
1368 人が閲覧しました

返信内容:

HHVM は、JIT コンパイルおよびその他のテクノロジを使用して PHP コードの実行パフォーマンスを大幅に向上させるオープン ソースの PHP 仮想マシンです。現在のバージョンのネイティブ PHP コードの実行パフォーマンスは 5 ~ 10 倍向上する可能性があると噂されています。

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 がトリガーされる条件は、コードまたは関数が複数回呼び出される場合です。

開発コストを考慮すると、スクリプト言語は避けられないトレンドです。ここでの問題は、Java の JIT コンパイラなど、インタープリタ言語をコンパイル言語に変換するコンバータですが、Facebook が最近オープンソース化した JIT PHP コンパイラと仮想マシンがこの可能性を提供できると思いますか。

通常の PHP コードでは、変数の型を固定できないため、型を決定するためのロジック コードを追加する必要があります。このような PHP コードCPU の実行に影響を与えず、最適化されています。したがって、HHVM は通常、変数の型を固定して仮想マシンのコンパイルと実行を容易にするために、Hack 記述メソッド (特定の機能と互換性を持たせるために追加された追加の技術コード) を備えた PHP コードを使用して「連携」する必要があります。 PHP はすべての型を 1 つの形式で収容することを追求しますが、Hack は収容されるすべてのものを特定の型でマークできます。

PHP コードのハック記述の例:

開発コストを考慮すると、スクリプト言語は避けられないトレンドです。ここでの問題は、Java の JIT コンパイラなど、インタープリタ言語をコンパイル言語に変換するコンバータですが、Facebook が最近オープンソース化した JIT PHP コンパイラと仮想マシンがこの可能性を提供できると思いますか。

上記の例では、PHP コードは次のとおりです。主に使用される変数の型を追加しました。 Hack ライティングの全体的な方向性は、これまでの「動的」な書き込み方法を、HHVM と連携する「静的」な書き込み方法に変更することです。

HHVM はそのパフォーマンスの高さから大きな注目を集めており、一部の一流インターネット企業も追随し始めています。純粋な言語の実行パフォーマンス テストの結果から判断すると、HHVM は開発中の PHP7 バージョンよりもはるかに優れています。

開発コストを考慮すると、スクリプト言語は避けられないトレンドです。ここでの問題は、Java の JIT コンパイラなど、インタープリタ言語をコンパイル言語に変換するコンバータですが、Facebook が最近オープンソース化した JIT PHP コンパイラと仮想マシンがこの可能性を提供できると思いますか。

ただし、特定のビジネス シナリオの観点から見ると、WordPress オープンソース ブログの結果では、HHVM と PHP7 の間のギャップはそれほど大きくありません。ホームページはテスト シナリオとして使用されますが、現在のギャップは明らかではありません。

開発コストを考慮すると、スクリプト言語は避けられないトレンドです。ここでの問題は、Java の JIT コンパイラなど、インタープリタ言語をコンパイル言語に変換するコンバータですが、Facebook が最近オープンソース化した JIT PHP コンパイラと仮想マシンがこの可能性を提供できると思いますか。

ただし、利用可能な技術ソリューションから判断すると、現在の HHVM の方がわずかに優れています。ただし、HHVM の展開とアプリケーションにはいくつかの問題があります。

  1. サービスの展開は複雑で、一定のメンテナンス費用がかかります。
  2. PHP ネイティブ コードは完全にはサポートされていないため、PHP 拡張機能も適切に互換性がある必要があります。
  3. HHVM は新しい仮想マシンであるため、長時間実行するとメモリ リークが発生する可能性があります。 (一流のインターネット企業がこの技術を適用する場合、自社でパッチを当てることでメモリリークを解決していると言われています)
追記: PHP7 は公式 PHP コミュニティの次のメジャーバージョンであり、PHP の実行パフォーマンスの向上を目的としています。 PHP コード。

私は以前に 2 つのコミュニティから人気のある科学記事をまとめました:
PHP7 と HHVM 間のパフォーマンスの戦いの紹介 ドライ。人々はコードをオープンソース化していますが、これは可能だと思いますか? インタプリタ言語やコンパイル言語は存在しません。
解釈またはコンパイルは、言語を実装する方法です。 JS と PHP の開発コストは安い、へーとしか言いようがありません

開発コストを削減するには、言語は要素の 1 つにすぎません。JS と PHP の実践では、これが重要です。は依然として重要度の低い要素の 1 つです。


静的型付け言語が迅速なデプロイメントに適していないというのは単なる固定概念であり、その理由は、特に WebForm モデルの破綻後、効果的な迅速なデプロイメント実践モデルが欠如しているためです。

軽量で柔軟な開発モデルやフレームワークと組み合わせる場合、JS と PHP には明らかな利点はありません。 スクリプト言語とは一体何でしょうか?質問のリストは非常に長いですが、概念の定義はすべて混乱しています。 JIT は通常、最適化手段の 1 つとして、バイトコードの「一部」をマシン コード キャッシュに変換することで、従来のキャッシュされたバイトコード (Zend の一部のキャッシュ拡張機能など) と比較して大幅に改善できます。一部のステートメントでは、JIT によってパフォーマンスが低下するため、この観点から、一部のステートメントは依然としてインタープリターまたは VM 実行エンジンを直接経由する必要があります。高性能のサーバーを作成する場合は、パフォーマンスが圧迫されるため、間違いなく C/C++ を選択します。単一のマシンのパフォーマンスは非常にエキサイティングです ~ そして、パフォーマンスに関して言えば、スクリプト言語は通常、C/C++ と組み合わせて拡張機能を作成します ~
したがって、傾向や傾向はなく、適合性が重要です。 ハック言語。あなたはそれに値する あなたはナンセンスなことを話しています! !中国人のクソ野郎はどこにでもいるし、少額のお金を出せば安価で大量の中国人を雇うことができる…(逃げろ)
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート