opcache は、zend エンジンのコンパイルによって生成されたオペコードをキャッシュするために使用されるため、次回コンパイルする必要はありません。
最近 php jit について聞いて、jit の概念について調べてみました。説明は次のとおりです:
JIT コンパイル (ジャストインタイム コンパイル)、つまり狭義のジャストインタイム コンパイルとは、あるコードを初めて実行するときにコンパイルすることを指します。をコンパイルせずに直接実行する場合は、動的コンパイルの一種であり、特殊なケースです。
php の jit と opcache の違いは何ですか?
源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)
来看下PHP的执行流程,假设有个a.php文件,不启用opacache的流程如下:
a.php->经过zend编译->opcode->PHP解释器->机器码
启用opacache的流程如下
a.php->查找opacache缓存,如果没有则进行zend编译为opcode并缓存->opacode->PHP解释器->机器码
启用jit的流程如下
a.php->编译->机器码
将来的には、コンパイルなしでマシンコードのみが実行されるようになり、より効率的になります
JIT の概念は実際には Java から来ています。Java では、JIT コンパイラーはバイトコードをマシンコードにコンパイルするプロセスです。
PHP と Java がマッピングされている場合、PHP を OpCode にコンパイルするプロセスは、Java をバイトコードにコンパイルするプロセスであり、ひいては、PHP の JIT は、OpCode をマシンコードにコンパイルするプロセスです。
もっと簡単に言うと、PHP プログラムは OpCode にコンパイルされ、実行のために PHP インタープリターに渡されます。このプロセスは依然として解釈と実行のプロセスです。また、JIT を通じてマシンコードにコンパイルすると、プログラムの実行効率が大幅に向上します。
いくつかの人気のあるスクリプト言語にはすでに独自の JIT がありますが、PHP にはこの点がまだ不足しています。それでは、楽しみにしていてください、PHP 8 を楽しみにしていてください