【问题标题】:What is PHP8 JIT compiler什么是 PHP8 JIT 编译器
【发布时间】:2020-06-20 04:36:54
【问题描述】:

什么是 PHP8 JIT?它能给 PHP 世界带来什么好处? 我的理解是,它是用来提高性能的。

【问题讨论】:

    标签: php php-8


    【解决方案1】:

    PHP 中的 JIT(即时)编译器与其他解释型编程语言的工作方式相同。它在程序启动后运行并动态编译代码(在运行时)。

    在 PHP8 中,JIT 将省略 Zend VM,如果编译后的代码已经被缓存,它会直接发送到 CPU。它将不依赖于 C 语言,并且该语言将能够开发自己的新功能。

    PHP8 中的 JIT 在性能上不会改变游戏规则。它会稍微改进它,但不如 PHP7 那样显着。已经有一些基准测试表明,基本基准测试(CPU 密集型任务)的性能要好得多,但在实际使用的应用程序中并没有太大变化。

    Article about JIT performance

    CPU 密集型任务:

    新鲜的laravel网页结果:

    • PHP 7.3:131.37 请求/秒
    • PHP 8.0 + JIT:133.57 请求/秒

    JIT 对 PHP 8 性能的相对贡献source

    Nice article with pros and cons for JIT.

    • 它为 PHP 在 Web 之外用作高性能语言打开了大门。
    • JIT 可以随着时间的推移而改进,我们的代码也可以。

    如果 PHP 代码可以在运行时解释,避免使用 VM,这意味着 PHP 本身在未来有更多机会处理 CPU 密集型任务,例如机器学习。

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

    【讨论】:

      【解决方案2】:

      现在第一个 Alpha 版已经发布,我想说基准测试非常有前途。

      与 PHP 7 相比,时间减少了大约 50%

      PHP8 JIT 在非琐碎任务(尤其是数学任务)中表现出色,并且对于非阻塞(异步)应用程序也很有前景。不过JIT不会一下子把PHP变成C语言,代码还是需要高度优化才能看到JIT的真正威力。

      查看 Zeev Suraski 的 Mandelbrot 示例 (Proof-of-Concept),了解 PHP 8 中的 JIT 有多么强大。

      【讨论】:

        猜你喜欢
        • 2022-10-14
        • 2011-05-01
        • 2017-05-20
        • 2011-02-23
        • 2010-10-16
        • 2019-03-01
        • 2011-07-01
        • 2010-09-10
        • 2016-09-19
        相关资源
        最近更新 更多