带 JIT 的 PHP 8 发布了! 咱们来跑个分~

PHP8 Benchmark the Brainfuck Way

这篇文章的 demo 源码能够在个人 Github 找到: github.com/karminski/P…php

PHP8 已经发布了, 带来了全新的, 使人兴奋的 JIT 编译引擎. 根据官方文档描述: "它在综合基准测试中的性能提升了大约 3 倍, 在某些特定的长期运行的应用程序中提升了 1.5-2 倍. 典型的应用程序性能与 PHP 7.4 至关.".git

官方性能测试结果以下图:github

那么实际状况如何?

因而我写了个简单的跑分 demo, 是一个从 Go 语言移植过来的 brainfuck 语言 解释器.数组

源码见: run.php. 里边顺便还包含了 brainfuck 实现的 曼德博集合(Mandelbrot set). 程序即用 PHP 编写的 brainfuck 语言解释器运行 brainfuck 编写的生成曼德博集合的程序. 而后计时并比较其性能.markdown

个人机器配置为: Intel(R) Xeon(TM) E5-2680v2 @2.8GHz.oop

PHP 8.0.0 没有开启J IT 测试结果

PHP 8.0.0 开启 JIT 测试结果

结论

从测试数据看, 未开启 JIT 耗时 6m20.973s, 开启 JIT 耗时 2m48.527s. 单从这一测试结果讲, 性能提高了 2.26 倍. demo 程序大部分时间都在作 ```foo++;\`\`\`, \`\`\`foo--;```, 数组查找并赋值这样的操做, 其中最多的 ```op_inc_dp``` 逻辑, 即 ```$dataPtr++;``` 执行了 4,453,036,023 次.性能

就本次测试结果而言, PHP 8 引入了 JIT 的性能提高是显著的. 这为 PHP 带来了新的可能性. 但同时咱们也看到官方测试中, 一些复杂的应用 (好比WordPress) 提高很微弱. 目前还不知道是由于 JIT 仍处于初期阶段致使性能提高不显著, 仍是由于 WordPress 因为是既存项目, 代码不可能为 JIT 专门优化过而致使性能提高不明显. 这部分还须要经过详细的 benchmark (好比使用火焰图) 来进行研判.测试

做为一个从 PHP 4 一路使用过来的老用户, 对 PHP 的感情是复杂的, PHP 如今十分缺少一个强力的生态来从新唤醒. 而这须要广大 PHPer 的共同努力. 期待将来 PHP 能有更好的表现.优化

Reference

License

相关文章
相关标签/搜索