欢迎大家访问博主的博客新家:IT博客达人网 (http://www.blogdaren.com)[耶]

php 的 opcache 和 php jit 有什么区别?

manon 2017-11-24 17:53 PHP 抢沙发 250人打酱油 打开侧边栏| 关闭侧边栏

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,以后运行只需执行机器码,不编译,效率上会大大提高。

正文部分到此结束

版权声明:除非注明,本文由( manon )原创,转载请保留文章出处

本文链接:php 的 opcache 和 php jit 有什么区别?

继续浏览:木有标签

PHP中在类名后面加一个::class是什么意思?比如:Database::class
详解LINUX之IO - 同步,异步,阻塞,非阻塞

发表评论

看看右边的头像对不对?→_→