PHP8 JIT编译器是什么?

8

什么是PHP8 JIT?它能给PHP世界带来哪些优势呢?从我的理解上来说,它用于性能提升。

2个回答

8
PHP中的JIT(即时编译器)与其他解释性编程语言中的工作方式相同。它在程序启动后运行,并实时编译代码(在运行时)。
在PHP8中,JIT将省略Zend VM,如果编译代码已经被缓存,则直接发送到CPU。它不会依赖于C语言,该语言将获得开发自己新功能的能力。

JIT scheme https://thephp.website/en/issue/php-8-jit/

PHP8中的JIT对性能来说并不是一个改变游戏规则的因素。它会稍微提高一些性能,但不像PHP7那样显著。已经有一些基准测试显示,在基本基准测试(CPU密集型任务)中性能要好得多,但在实际应用中并没有太大变化。

关于JIT性能的文章

CPU密集型任务:

全新Laravel网页的结果:

  • PHP 7.3:131.37次/秒
  • PHP 8.0 + JIT:133.57次/秒

相对于 PHP 8 性能而言,JIT 的贡献来源 PHP 8 performance https://www.php.net/images/php8/scheme.svg

一篇关于 JIT 的优缺点的好文章。

  • 它打开了将 PHP 作为一个高性能语言用于 Web 以外的领域的大门。
  • JIT 可以随着时间的推移进行改进,我们的代码也可以。

如果 PHP 代码可以在运行时解释而不是通过虚拟机,则意味着在未来 PHP 自身在 CPU 密集型任务(如机器学习)方面的机会更多。

PHP 中有几种 JIT 配置类型。您可以设置优化级别、触发器、寄存器分配和特定于 CPU 的优化标志。我不会把所有内容都粘贴出来,但可以在文档中找到(目前还没有官方 JIT 文档,只有 RFC)。


我的单元测试在 PHP 7.4.25 上持续了/持续时间为 3 分钟,但在禁用 opcache 的 PHP 8.2.0 上,完全相同的测试只需要 2 分钟和 15 秒,速度提升了 25%(注意,我在 Windows 上进行了测试,并且上述持续时间是多次测试运行的平均值)。 - Top-Master

1
现在第一个alpha版本已经发布,我认为基准测试非常有前途。与PHP 7相比,时间缩短了约50%。PHP8 JIT在非平凡任务(尤其是数学任务)方面表现出色,并且对于非阻塞(异步)应用程序也很有前途。然而,JIT并不会使PHP C语言突然变得更强大,代码仍然需要进行高度优化才能看到JIT的真正威力。请参见Zeev Suraski的Mandelbrot示例(Proof-of-Concept)以了解PHP 8中JIT的强大之处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接