当前位置:  开发笔记 > 编程语言 > 正文

了解一下PHP 8的 JIT 特性!

​本篇文章给大家介绍一下PHP8的JIT特性。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
本篇文章给大家介绍一下PHP 8 的 JIT特性。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP 的 JIT 解释流程。如果已编译,则 Opcodes 不会通过 Zend VM 执行。

因此,在 Opcache 扩展中,有两条检测指令判断要不要编译 Opcode 。如果要,编译器将使用 DynASM 将此 Opcode 转换为机器码,并执行此机器码。

有趣的是,由于当前接口中编译的代码有 MB 的限制 (也是可配置的),所以代码执行必须能够在 JIT 和解释代码之间无缝切换。

顺便说一句,Benoit Jacquemont 在 php 的 JIT 上的这篇演讲帮助我理解了这整件事。

我仍然不确定编译部分什么时候有效进行,但我想现在我真的不想知道。

所以你的性能收益可能不会很大

我希望现在大家都很清楚为什么大多数 php 应用程序不会因为使用即时编译器而获得很大的性能收益。这也是为什么 Zeev 建议为你的应用程序分析和试验不同的 JIT 配置是最好的方法。

如果您使用的是 PHP FPM,则通常会在多个请求之间共享已编译的操作码,但这仍然不能改变游戏规则。

这是因为 JIT 优化了计算密集型的操作,而如今大多数 php 应用程序比其他任何东西都更受 I/O 约束。如果您无论如何都要访问磁盘或网络,则处理操作是否已编译则无关紧要。时间上将非常相似。

除非…

你正在做一些不受 I/O 约束的事情, 像图像处理或机器学习。 任何不接触 I/O 的东西都将受益于 JIT 编译器。

这也是为什么现在人们说我们更愿意用 PHP 编写原生功能而不是 C 编写的原因。 如果仍然要编译此功能,则开销将毫无表现力。

有趣的时光成为一个 PHP 程序员…

相关教程推荐:《PHP教程》

以上就是了解一下PHP 8的 JIT 特性!的详细内容,更多请关注其它相关文章!

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有