Heim  >  Fragen und Antworten  >  Hauptteil

zend-opcache – Was ist der Unterschied zwischen dem Opcache von PHP und dem aktuellen PHP-JIT?

opcache wird verwendet, um den durch die Zend-Engine-Kompilierung generierten Opcode zwischenzuspeichern, sodass er beim nächsten Mal nicht kompiliert werden muss.
Ich habe kürzlich von PHP Jit gehört und einen Blick auf das Konzept von Jit geworfen. Die Beschreibung lautet wie folgt:

JIT-Kompilierung (Just-in-Time-Kompilierung), dh Just-in-Time-Kompilierung im engeren Sinne, bedeutet, dass ein bestimmter Codeabschnitt kompiliert wird, wenn er zum ersten Mal ausgeführt werden soll, und dann direkt ohne Kompilierung ausgeführt Es handelt sich um einen Sonderfall der dynamischen Kompilierung.

Was ist der Unterschied zwischen Jit und Opcache von PHP?

我想大声告诉你我想大声告诉你2645 Tage vor1186

Antworte allen(2)Ich werde antworten

  • 黄舟

    黄舟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->编译->机器码
    以后都只执行机器码,不编译,效率上高了很多

    Antwort
    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

    Antwort
    0
  • StornierenAntwort