https://www.jmqz1000.com

PHP 8有多好?

今年年底,PHP-8将很快发布。尽管这个主要版本有许多新特性,例如联合类型、静态返回和弱映射,但最期待的改进是JIT编译器。

理论上,JIT处理PHP脚本编译的方式可以提高应用程序的速度。但是让我们看看这个方法是否能满足我们的期望。

请注意,本文中使用的PHP-8不是最终版本。

首先,让我们编写一段运行代码。我选择了冒泡排序,因为这是最差的排序算法,我只能在这个测试中使用这个排序算法。

& lt?PHP function bubble _ sort($ array){ $ start = micro time(true);do { $ sw = false对于($i = 0,$ size = count($ array)-1;$i <。$ size$i++) { if( $array[$i]>;$ array[$ I+1]){ list($ array[$ I+1],$array[$i] ) = array($array[$i],$ array[$ I+1]);$sw =真;} } } while($ SW);$end = microtime(真);返回$ end-$ start;}$array =数组(1000,-202,3,0,2,77,5,-1,4,34,-203,1,0.5,-3,0.88,4000,444,0.99,-44,4,454443,-44444,23,-201,5000,444,0.99,-44,4,4553,-4,253,-201,60000 30500,1144,0.99,-4.4,4,453,-4,23,-201,-3000,-444,0.99,-44,4,453,-4,23,-1,3000,424,0.19,-44,4,453,-4,23,-21,300,454,0.99222,-44,4,453,-4,23,-4 39000,444,0.99,-44,4,53,-4,23,-201,309900,444,0.99,23,123,453,-4,23,-201,309900,444,0.99,-4.14,4,453,-4,23,-201,309900,444,0.99,-4.44,4 3033300,33444,0.49,-44,4,453,-4,2.4443,-201,4000,444,0.99,-44,4,454443,-4444,23,-201,5000,444,0.99,-44,4,4553,-4,253,-201,6000,444,0.99 -3000,-444,0.99,-44,4,453,-4,23,-1,3000,424,0.19,-44,4,453,-4,23,-21,300,454,0.99222,-44,4,453,-4,23,-20.1,301110,4442,0.991,-44,4,453,-4,4 309900,444,0.99,23,123,453,-4,23,-201,309900,444,0.99,-4.14,4,453,-4,23,-201,309900,444,0.99,-4.44,4,453,-4,23,-201,30500,1144,0.99,-4。 4000,444,0.99,-44,4,454443,-44444,23,-201,5000,444,0.99,-44,4,4553,-4,253,-201,6000,444,0.99,-44,4,443,-4,2.3,-2.01,39000,444,0.99,-44,4 3000,424,0.19,-44,4,453,-4,23,-21,300,454,0.99222,-44,4,453,-4,23,-20.1,301110,4442,0.991,-44,4,453,-4,2.443,-201,3033300,33444,0.49,-44 309900,444,0.99,-4.14,4,453,-4,23,-201,309900,444,0.99,-4.44,4,453,-4,23,-201,30500,1144,0.99,-4.4,4,453,-4,23,-201,-3000,-444,0.99,-44,4,4 5000,444,0.99,-44,4,4553,-4,253,-201,6000,444,0.99,-44,4,443,-4,2.3,-2.01,39000,444,0.99,-44,4,53,-4,23,-201,309900,444,0.99,23,123,453 300,454,0.99222,-44,4,453,-4,23,-20.1,301110,4442,0.991,-44,4,453,-4,2.443,-201,3033300,33444,0.49,-44,4,453,-4,2.4443,-201,4000,444,0。 309900,444,0.99,-4.44,4,453,-4,23,-201,30500,1144,0.99,-4.4,4,453,-4,23,-201,-3000,-444,0.99,-44,4,453,-4,23,-1,3000,424,0.19,-44,4,453,-4,4 6000,444,0.99,-44,4,443,-4,2.3,-2.01,39000,444,0.99,-44,4,53,-4,23,-201,309900,444,0.99,23,123,453,-4,23,-201,309900,444,0.99,-4.14,4,444 301110,4442,0.991,-44,4,453,-4,2.443,-201,3033300,33444,0.49,-44,4,453,-4,2.4443,-201,4000,444,0.99,-44,4,454443,-444444,23,-201,5000,4444 30500,1144,0.99,-4.4,4,453,-4,23,-201,-3000,-444,0.99,-44,4,453,-4,23,-1,3000,424,0.19,-44,4,453,-4,23,-21,300,454,0.99222,-44,4,453,-4,23,-4 39000,444,0.99,-44,4,53,-4,23,-201,309900,444,0.99,23,123,453,-4,23,-201,309900,444,0.99,-4.14,4,453,-4,23,-201,309900,444,0.99,-4.44,4 3033300,33444,0.49,-44,4,453,-4,2.4443,-201,4000,444,0.99,-44,4,454443,-4444,23,-201,5000,444,0.99,-44,4,4553,-4,253,-201,6000,444,0.99 -3000,-444,0.99,-44,4,453,-4,23,-1,3000,424,0.19,-44,4,453,-4,23,-21,300,454,0.99222,-44,4,453,-4,23,-20.1,301110,4442,0.991,-44,4,453,-4,4 回声\n;echo bubble _ sort($数组);回声\n;?>。我知道这个脚本写得不是很好,尤其是中间令人讨厌的数组。我知道我可以生成一个随机数组。我也知道我可以从文件中读取这个数组。然而,我只想要一个不需要考虑其他因素的非常慢的冒泡算法。我不希望在这个基准测试中有任何额外的干扰。

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

Docker容器运行-RM-v $(pwd):/script/PHP:7.4 PHP/script/bubble . PHP运行100次,平均时间为0.10253500938416秒-不错。

现在我们运行的是PHP-8,不要先激活JIT。

docker container un-RM-v $(pwd):/script/Martin Pham/PHP 8:fpm-extra-alpine PHP/script/bubble . PHP也可以运行100次,平均时间为0.09829246684老实说,这次晋升不是很明显。

接下来,让我们测试期待已久的JIT:

docker container run-RM-v $(pwd):/script/keinos/PHP 8-JIT PHP/script/bubble . PHP平均运行时间为0.053637981414795秒!准时制真是一个惊喜!对于像我这样非常关心行刑时间的人来说,这简直是一种福气。尽管当你单独看数字时感觉不太好(只提高了0.04458594322秒),但转换成百分比后,你可以更好地看到优势:45.39%。

我想从更多的角度进行比较,所以我在2009年使用了PHP-5.3来运行这段代码。

docker container run-RM-v $(pwd):/script/PHP:5.3 PHP/script/bubble . PHP

平均起来,它需要0.645740043219604秒。它比激活了JIT的PHP-8多了0.5922100508(下降了1,103.88)!天哪,2009年我们是怎么来到这里的?

注意:

我选择的脚本只有一个纯气泡算法。当然,你可以尝试其他代码,如旅行推销员问题或二叉树。结果应该是相似的。

正如我在本文中提到的,这个基准测试运行的PHP-8版本不是最终版本,所以最终版本中可能会添加其他改进。

我在测试结果中保留了许多小数位。虽然它看起来冗长,但我只想尽可能准确。

在基准测试中,我使用了keinos和martinpham的docker图像。事实上,还有很多其他的工具,你可以选择你喜欢尝试的。

我运行测试的笔记本电脑配置为Linux Manjaro、3 GHz英特尔酷睿i5和32 GB内存。在其他配置下,具体数字可能会有所不同,但我相信改进结果非常相似。

推荐教程:以上是PHP 8取得的性能提升。请关注《学志王》中的其他相关文章。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。