9

PHPは、汎用のサーバーサイドスクリプト言語です。ページが読み込まれ、結果のWebページが表示されるときに、phpコードが解釈されることはよく知られています。最近、PHP(HipHop Virtual Machine)用のジャストインタイムコンパイラについて聞いたことがあります。実行時にどのような違いが生じるのか知りたいのですが、インタプリタの代わりにjitを使用する方がよいでしょうか。jitを持っているphpエンジンはありますか?

編集:PHPの実行フローは次のようになっていますか?:phpコード->解析->トークン->バイトコード/オペコード->phpエンジンの解釈->マシンコード->実行

私が間違っている場合は私を訂正してください。バイトコードは通常、仮想マシンで実行されます。オペコード(機械語に近い)は、機械で直接実行できます。これは、PHPエンジンが仮想マシンであることを意味しますか、それともその一部の実装が仮想マシンであることを意味しますか?

前もって感謝します。

4

1 に答える 1

6

HipHop は JIT コンパイラではありません。PHP を C++ に変換するコード コンバーターであり、従来のオフライン コンパイラーを使用してコンパイルできます。

その結果、eval と create_function は機能せず、トークナイザー機能も機能しません。私はこの問題を深く調べていませんが、条件付き/実行時に評価されたインクルード操作も問題を引き起こす可能性が高いと予想しています。

コードが大幅に高速化されない限り、あまり意味がありません。

PHP オペコード キャッシュを使用する OTOH は、機能性を損なうことなく、パフォーマンスを大幅に向上させます (ネイティブ コードほどではありません)。

(PHP 以外のアーキテクチャを考えると、JIT コンパイラはあまり意味がありません)

于 2012-05-02T10:40:05.303 に答える