Code前端首页关于Code前端联系我们

PHP 8 是否支持 JIT(Just-In-Time)即时编译和执行功能?

terry 2年前 (2023-09-25) 阅读数 49 #后端开发

PHP 8 是否支持JIT(Just-In-Time)即时编译和执行功能。最新消息称,官方已经确认了其介绍。

PHP 8 是否支持 JIT(Just-In-Time)即时编译执行功能

PHP 实现了一个虚拟机 Zend VM,它将人类可读的脚本编译成虚拟机可以理解的指令,即操作码。这个执行阶段就是“编译时”。在“运行时”执行阶段,Zend VM 虚拟机将执行这些编译后的操作码。

通常编译和运行阶段是独立的。脚本编译完成后,APC、OPCache等字节码缓存组件会缓存这些操作码。 JIT去掉了编译时阶段,将编译时和运行时阶段整合在一起,实现即时编译和执行。

JIT 是一种编译器策略,它将代码表示为中间状态,在运行时将其转换为架构相关的机器代码,并直接执行。在 PHP 中,这意味着 JIT 将 Zend VM 生成的指令视为中间表示,并以依赖于体系结构的机器代码执行它们。也就是说,托管代码的不再是 Zend VM,而是底层 CPU。 。

尽管自 PHP 7.0 以来,通过优化核心 HashTable 数据结构、强化 Zend VM 中的某些操作码以及不断改进 OPCache 的 Optimizer 组件,PHP 性能有了显着提高,但这些优化似乎基本上消失了。它已经达到了极限。现在JIT是从下往上开始的,被认为是提高PHP性能的最佳方法。

关于是否实施JIT的正式投票结果于近日公布。由于大多数核心开发人员都投票赞成,PHP 8 将支持 JIT。

还值得一提的是,对于使用 PHP 的网站来说,PHP JIT 的速度提升可能并不明显,因为 JIT 最适合 CPU 密集型代码。而且一般情况下,用PHP编写的程序都是I/O密集型的。简单地说,PHP 程序通常受 I/O 而不是 CPU 的限制。导致 PHP 代码运行速度变慢的因素通常是它们执行的 I/O 操作,包括连接、读取和写入数据库和缓存。 、文件和套接字等。

PHP 中 CPU 密集型代码的示例是 Zend/bench.php。

那么 JIT 将在 PHP 中发挥什么作用呢?答案就在数学领域。 PHP JIT的详细介绍请访问:https://blog.krakjoe.ninja/2019/03/php-gr8.html

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门