検索

ホームページ  >  に質問  >  本文

zend-opcache - php の opcache と最近の php jit の違いは何ですか?

opcache は、zend エンジンのコンパイルによって生成されたオペコードをキャッシュするために使用されるため、次回コンパイルする必要はありません。
最近 php jit について聞いて、jit の概念について調べてみました。説明は次のとおりです:

JIT コンパイル (ジャストインタイム コンパイル)、つまり狭義のジャストインタイム コンパイルとは、あるコードを初めて実行するときにコンパイルすることを指します。をコンパイルせずに直接実行する場合は、動的コンパイルの一種であり、特殊なケースです。

php の jit と opcache の違いは何ですか?

我想大声告诉你我想大声告诉你2697日前1226

全員に返信(2)返信します

  • 黄舟

    黄舟2017-06-26 10:51:19

    源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)
    来看下PHP的执行流程,假设有个a.php文件,不启用opacache的流程如下:
    a.php->经过zend编译->opcode->PHP解释器->机器码
    启用opacache的流程如下
    a.php->查找opacache缓存,如果没有则进行zend编译为opcode并缓存->opacode->PHP解释器->机器码
    启用jit的流程如下
    a.php->编译->机器码
    将来的には、コンパイルなしでマシンコードのみが実行されるようになり、より効率的になります

    返事
    0
  • 三叔

    三叔2017-06-26 10:51:19

    JIT の概念は実際には Java から来ています。Java では、JIT コンパイラーはバイトコードをマシンコードにコンパイルするプロセスです。

    PHP と Java がマッピングされている場合、PHP を OpCode にコンパイルするプロセスは、Java をバイトコードにコンパイルするプロセスであり、ひいては、PHP の JIT は、OpCode をマシンコードにコンパイルするプロセスです。

    もっと簡単に言うと、PHP プログラムは OpCode にコンパイルされ、実行のために PHP インタープリターに渡されます。このプロセスは依然として解釈と実行のプロセスです。また、JIT を通じてマシンコードにコンパイルすると、プログラムの実行効率が大幅に向上します。

    いくつかの人気のあるスクリプト言語にはすでに独自の JIT がありますが、PHP にはこの点がまだ不足しています。それでは、楽しみにしていてください、PHP 8 を楽しみにしていてください

    返事
    0
  • キャンセル返事