0
点赞
收藏
分享

微信扫一扫

PHP JIT

树下的老石头 2022-03-12 阅读 43

全称
Just In Time  
好处
目前已经很难通过常规手段提升 PHP 的性能,JIT 基本上是目前性能提升的唯一手段;

简单来说:当JIT按预期工作时,你的代码将不会通过Zend VM执行,而是直接作为一组CPU级指令执行
PHP代码执行原理
每当要执行PHP代码(例如代码段或整个Web应用程序)时,都必须经过php解释器。最常用的是PHP FPM和CLI解释器,他们的工作很简单:接收php代码,对其进行解释并向后吐出结果。
执行流程:
1. PHP代码被读取并转换为一组关键字,即标记(Tokens)。这个过程允许解释器理解在程序的哪一部分中写了哪段代码。这第一步叫做词法分析或符号化。
有了Tokens后,PHP解释器将分析这个Tokens集合,并尝试理解它们。结果通过一个称为解析的过程生成了一个抽象语法树(AST)。这个AST是一组指示应该执行哪些操作的节点。例如,“echo 1 + 1”实际上应该表示“打印1 + 1的结果”,或者更实际一些“打印一个操作,操作是1 + 1”。

这里有一个瓶颈:如果php代码变化不是那么频繁,那么每次执行代码时对其进行词法分析又有什么意义呢?最后我们只关心操作码,所以这就是为什么存在Opcache扩展
Opcache扩展
Opcache扩展是随PHP附带的,通常没有什么理由禁用它。如果使用PHP,应该打开Opcache。

©著作权归作者所有:来自51CTO博客作者飞天程序猿的原创作品,请联系作者获取转载授权,否则将追究法律责任
#yyds干货盘点#不是所有的PHP项目都能使用JIT提速
https://blog.51cto.com/u_13237322/4598534

有了AST,理解操作和优先级就容易得多了。将这个树转换成可以执行的东西需要一个中间表示(IR),在PHP中我们称之为操作码。将AST转换为操作码的过程称为编译。现在,有了操作码,剩下就是执行代码。PHP有一个名为Zend VM的引擎,它能够接收操作码列表并执行它们。在执行了所有操作码之后,Zend VM就存在了,程序就终止了。

JIT 带来的性能提升可以让 PHP 在更多使用场景( CPU 密集)中发挥作用;可以使用 PHP 来开发内置函数,而不用担心性能方面的问题。这一方面可以加速语言的发展(更多人可以参与进来),同时也可以减少目前使用 C 开发容易出现的内存管理、溢出等问题

​​

举报

相关推荐

PHP JIT5

PHP JIT7

PHP JIT2

PHP JIT4

PHP JIT3

PHP JIT17

PHP JIT9

PHP JIT11

PHP JIT10

PHP JIT12

0 条评论