简单的PHP 8 / PyPy / Node.js JIT性能对比
发布网友
发布时间:2024-09-30 12:26
我来回答
共1个回答
热心网友
时间:2024-09-30 14:02
写在前面:完整的性能评估需要依赖全面的benchmark测试,micro-benchmark只能展示部分问题,通常只能提供特定场景下的性能提升。真正的性能提升需要依托于真实场景下的应用测试。
在知乎上看到一篇关于PHP 8 JIT版本的benchmark测试,非常有意思。
这个实验通过Brainfuck解释器加上Brainfuck代码来测试性能,这种测试方式比较少见。尽管本质上还是micro-benchmark,但测试的性能较为单一,主要集中在:单变量++/--,数组读,数组读写等方面。
然而,这篇文章中存在一个错误,即PHP 8虽然已经发布,但默认并未开启JIT。手册中对此存在误导性描述,因为手册中提到opcache.jit默认设置为开启,但实际上还需要将opcache.jit_buffer_size设置为非0值,更不用说官方镜像默认没有加载opcache.so(what???)。因此,正确的测试命令行是:
PHP是所有测试语言中唯一需要单独配置的。
以下是我在虚拟机上进行的测试结果,虚拟机的CPU型号为E5-2667 v3 @ 3.20GHz,比i5略强,因此速度也会比上一个作者测试的结果快一些。所有测试使用的binary都是官方docker镜像。
以下是
注意:Python有两个版本的脚本,差别很小,因为Python没有常量定义语法,所以第一个版本是用类属性代替常量的,第二个版本手动替换成了立即数。第一个版本更接近其他语言的写法,第二个版本更接近其他解释器解释的版本。
使用代码在github上
houbo1016/PHP8-Benchmark-the-Brainfuck-Way