6

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

4

2 回答 2

7

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

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

JIT 方案 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 请求/秒

相对 JIT 对 PHP 8 性能源的贡献 PHP 8 性能 https://www.php.net/images/php8/scheme.svg

很好的文章,对 JIT 有利有弊。

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

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

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

于 2020-05-16T11:26:23.727 回答
1

既然第一个 alpha 版本已经发布,我会说基准测试非常有希望。

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

PHP8 JIT 擅长于非平凡的任务,尤其是数学任务,它也适用于非阻塞(异步)应用程序。但是,JIT 不会一下子把 PHP 变成 C 语言,代码还是需要高度优化才能看到 JIT 的真正威力。

请参阅 Zeev Suraski 的这个 Mandelbrot 示例(概念证明),了解 PHP 8 中的 JIT 有多么强大。

于 2020-06-27T21:18:11.247 回答