php 的 opcache 和 php jit 有什么区别?
1. 概念
JIT这个概念其实来自Java,在Java里,JIT编译器的工作过程就是将字节码编译为机器码的过程。
如果把PHP和Java做对应,那么PHP编译成OPCode的过程就是Java编译为字节码的过程,而引申起来,PHP的JIT,也就是把OPCode编译为机器码的过程。
更简单的说,Zend引擎将PHP程序编译成OPCode,而后再交给PHP解释器执行,这样的过程还是一个解释执行的过程。而如果通过JIT编译为机器码,那么程序的执行效率是可以得到大幅提高的。
2. 原理
源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)
A: 来看下PHP的执行流程,假设有个test.php文件,禁用opcache的流程如下:
test.php->经过zend编译->opcode->PHP解释器->机器码
B: 启用opcache的流程如下:
test.php->查找opcache缓存,如果没有则进行zend编译为opcode并缓存->opcode->PHP解释器->机器码
C: 启用jit的流程如下:
test.php->编译->机器码
3. 结论:
明显的,有了PHP-JIT,以后运行只需执行机器码,不编译,效率上会大大提高。
版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。
发表评论: