什么是 PHP8 JIT?以及它能给 PHP 世界带来哪些优势?
我的理解是,它用于性能改进。
最佳答案
PHP 中的 JIT(即时)编译器的工作方式与其他解释型编程语言中的相同。它在程序启动后运行并动态编译代码(在运行时)。
在 PHP8 JIT 中会省略 Zend VM
如果编译后的代码已经被缓存,它会直接发送到 CPU。它将不依赖于 C 语言,该语言将有能力开发自己的新功能。
PHP8 中的 JIT 不会改变性能。它会稍微改进它,但不会像 PHP7 那样显着。已经有一些基准测试表明,在基本基准测试(CPU 密集型任务)中的性能要好得多,但在实际使用的应用程序中并没有太大变化。
Article about JIT performance
CPU 密集型任务:
- nikic/PHP-Parser ran about 1.3 times faster in benchmark made by Nikita Popov
- A hello world application written with Amp had about 5% speed improvement
- MessagePack benchmarks showed 1.3 to 1.5 times speed up
新鲜 laravel 网页的结果:
- PHP 7.3: 131.37 req/s
- PHP 8.0 + JIT: 133.57 req/s
相对 JIT 对 PHP 8 性能的贡献 source
Nice article with pros and cons for JIT.
- It opens the door for PHP to be used as a very performant language outside of the web.
- The JIT can be improved upon over time, as well could our code.
如果 PHP 代码可以在运行时避免 VM 进行解释,则意味着 PHP 本身在 future 有更多机会执行 CPU 密集型任务,例如机器学习。
PHP 中有多种类型的 JIT 配置。您可以设置优化级别、触发器、寄存器分配和 CPU 特定的优化标志。我不会粘贴所有内容,但可能会在 documentation 中找到(目前还没有官方的 JIT 文档,只有 RFC)。
关于php - 什么是 PHP8 JIT 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60581060/