PHP 8将有多快?

在今年年底,PHP-8将成为现实。尽管此主要版本具有多种新功能,例如联合类型,静态返回和弱映射,但最令人期待的改进是JIT编译器。

从理论上讲,JIT将由于其处理PHP脚本的方式而提高了应用程序的速度(我简化了)。但让我们看看这种方法是否符合我们的期望

请注意,我将要使用的PHP-8版本不是最终版本。

首先,让我们定义要运行的代码。我选择冒泡排序是因为它是最差的排序方法,我只能将其用于此类练习。

https://gist.github.com/PedroEscudero/b64ea7409c0cc483c44f0773b6aebbdb中的源代码

我知道该脚本在中间那讨厌的数组并不美观。我知道我可以生成一个随机数组。我也知道我可以从文件中读取它。但是,我只想要一个没有其他考虑因素的缓慢泡沫。在此基准测试中,我不需要任何额外的干扰。

首先,让我们在当前版本的PHP 7.4中运行脚本

docker container run --rm -v $(pwd):/script/ php:7.4 php /script/bubble.php

运行100次后,平均时间为0.10253500938416秒。不错。

现在我们使用未激活JITPHP 8 。

docker container run --rm -v $(pwd):/script/ martinpham/php8:fpm-extra-alpine php /script/bubble.php

同样,在运行100次之后,我的平均时间为0.098223924636841秒。老实说,改进不是很令人印象深刻。

但是我们在这里测试JIT功能,闪亮而令人惊叹的JIT:

docker container run --rm -v $(pwd):/script/ keinos/php8-jit php /script/bubble.php

平均时间为0.053637981414795秒!的确,JIT令人眼前一亮!对于像我这样需要担心执行时间的人来说。尽管该数字似乎并不十分相关(仅改善了0.04458594322秒),但如果以百分比查看,则可以更好地理解收益:45.39%。

我想要更多的比较,因此我使用了2009年史前版本的PHP-5.3版本。

docker container run --rm -v $(pwd):/script/ php:5.3 php /script/bubble.php

花了0.64574003219604秒。比激活PHP-8和JIT慢0.5921020508。

img

100个脚本运行时的平均性能比较

注意事项和注意事项

  • 我选择了冒泡排序脚本。您可以尝试其他选项,例如业务员问题或二叉树。结果应遵循相同的模式。
  • 正如我所提到的,此基准测试中运行的PHP 8版本不是最终版本,因此可以在最后一个发行版之前添加其他改进。
  • 我决定将浮点数保留为很多小数,即使它不是很漂亮。我想尽可能地精确。
深入理解PHP8 JIT
git fetch-从远程拉取数据
ajax-loader