PHP多版本、多平台的速度测试结果(超完整)

王志勇 发表于 2019年10月03日 17:00

说明:本文的测试数据均来自同一台主机,这样能够得出更精确的对比,安装环境、测试这些数据用了1天多的时间。测试的内容仅为让循环程序执行累加1000万次,其它的函数、语句可能会有差异。虽然只是测试一项,但还是有参考价值,能够从这些执行结果中,看出不同的PHP版本的执行速度的提升。

如果对PHP的每个函数、每个语句进行速度测试,每天测试10个小时,可能连续3-5年都测不完。因此,所有的PHP的性能对比测试的数据都是不完全精确的,只能参考。这是因为每个函数、每个语句,在不同版本下的速度提升不同,有可能有的函数、语句并没有提升。

下列数据的结论:
1. 单从循环程序累加这方面来看,在Debian、Ubuntu系统下,PHP 7.0~7.3速度几乎完全一样,没有性能的提升;PHP 7.1~7.3速度完全一样,PHP 7.0反而略微快一点点,约5%-10%的差异。PHP 7.4有了明显的提升,PHP 7.4速度约是PHP 7.3的1.9~2.1倍
2. Debian、Ubuntu系统下,Apache和Nginx下的PHP一样快。
3. CentOS系统下,Nginx+PHP平均比Apache+PHP快约20%-50%
4. PHP 7.4+Debian,速度约是PHP 7.4+CentOS 7的2倍。
5. PHP 7.3+Debian,速度约是PHP 7.3+CentOS 7的1.5倍。
6. PHP 7.X+CentOS 7,速度约是PHP 7.X+CentOS 6的1.5~2倍。
7. 在CentOS 7系统下,PHP 7.4和PHP 7.3的速度差异不大。而在Debian+PHP 7.4,体现出了PHP 7.3的2倍速度。
8. Debian 8+PHP 7.X和Debian 9+PHP 7.X的速度完全一样。这2个系统使用上最明显的不同是,Debian 8依然保留rc.local的功能(可用于开机自启);Debian 9去掉了rc.local。
9. Ubuntu和Debian,同一版本的PHP,在这两个系统下的速度没有任何区别。上述的评测结论中,所有的“Debian”的词语可以替换成“Ubuntu”,因为这两者的服务器性能一样,很难找出区别。
Ubuntu的优点:Ubuntu 12的OpenVZ版自带已配置好的sendmail。Ubuntu 16、18版本依然保留rc.local。
Ubuntu服务器版开机、或重启特别快,约11秒开机,可能是由于服务器版不带桌面。
10. 通过第三方软件源安装的PHP,和系统自带源安装的PHP,如果版本相同,性能没有任何区别。
PHP方面,最好用的第三方软件源,Ubuntu用PPA,Debian用sury,CentOS用remi。这三家第三方软件源,都在默默地、无私地为大家耕耘着
正是因为有这些第三方软件源,我们可以轻松安装任意的PHP版本。

测试程序为:
<?php
$start=microtime(true);
for ($i=1;$i<=10000000;$i++){}
$end=microtime(true);
echo ($end-$start);
?>

下列数据的单位是微秒,即百万分之一秒。每个平台刷新多次,取成绩较好的3次结果。

Debian 8.0+Apache+PHP 7.4.0 (我的主力环境,省内存)
0.053919076919556 微秒
0.055496215820312 微秒
0.057925224304199 微秒

Debian 8.0+Apache+PHP 7.3.9
0.10902500152588
0.11312508583069
0.10770606994629

Debian 8.0+Apache+PHP 7.2.22
0.10908794403076
0.11758494377136
0.11525297164917

Debian 8.0+Apache+PHP 7.1.32
0.10679697990417
0.11357116699219
0.10770082473755

Debian 8.0+Apache+PHP 7.0.33
0.11288595199585
0.1017382144928
0.10212206840515

Debian 8.0+Apache+PHP 5.6.40
0.24600291252136
0.26271605491638
0.25394105911255

Debian 8.0+Nginx+PHP 7.4.0
0.05839204788208
0.058258056640625
0.055569887161255

Debian 8.0+Nginx+PHP 7.3.9
0.096651077270508
0.086481094360352
0.089262962341309

Debian 8.0+Nginx+PHP 7.2.22
0.098964929580688
0.099143981933594
0.10303401947021

Debian 8.0+Nginx+PHP 7.1.32
0.10124802589417
0.094712972640991
0.09648609161377

Debian 8.0+Nginx+PHP 7.0.33
0.10983800888062
0.10881519317627
0.1045229434967

Debian 8.0+Nginx+PHP 5.6.40
0.25392508506775
0.27300190925598
0.26028108596802

Debian 9.11+Apache+PHP 7.4.0
0.058127164840698
0.060291051864624
0.057128190994263

Debian 9.11+Nginx+PHP 7.4.0
0.05649209022522
0.052047967910767
0.063120126724243

CentOS 7.4.1708+Apache+PHP 7.4.0
0.11540389060974
0.12529706954956
0.1295108795166

CentOS 7.4.1708+Nginx+PHP 7.4.0
0.11188888549805
0.10081100463867
0.10230398178101

CentOS 7.4.1708+Apache+PHP 7.3.10
0.13830399513245
0.15926194190979
0.16574501991272

CentOS 7.4.1708+Apache+PHP 7.2.23
0.15155291557312
0.16431307792664
0.17670583724976

CentOS 7.4.1708+Apache+PHP 7.1.32
0.13999104499817
0.15872001647949
0.16652798652649

CentOS 7.4.1708+Apache+PHP 7.0.33
0.15262198448181
0.17163014411926
0.15957283973694

CentOS 7.4.1708+Apache+PHP 5.6.40
0.35205221176147
0.43340182304382
0.38812303543091

CentOS 7.4.1708+Apache+PHP 5.5.38
0.40842986106873
0.39665794372559
0.35387682914734

CentOS 7.4.1708+Apache+PHP 5.4.45
0.3356499671936
0.36821007728577
0.39978694915771

CentOS 6.5+Apache+PHP 7.3.10
0.27494788169861
0.29654908180237
0.2439329624176

CentOS 6.5+Apache+PHP 7.2.23
0.24336791038513
0.23833394050598
0.26327610015869

CentOS 6.5+Apache+PHP 7.1.32
0.23659801483154
0.25639605522156
0.27514219284058

CentOS 6.5+Apache+PHP 7.0.33
0.25079107284546
0.23825097084045
0.25114798545837

CentOS 6.5+Apache+PHP 5.6.40
0.43943095207214
0.41831111907959
0.42791104316711

CentOS 6.5+Nginx+PHP 7.3.10
0.22572708129883
0.24627017974854
0.25817704200745

CentOS 6.5+Nginx+PHP 7.2.23
0.27135300636292
0.26882815361023
0.24049091339111

CentOS 6.5+Nginx+PHP 7.1.32
0.22624206542969
0.26890277862549
0.24356007575989

CentOS 6.5+Nginx+PHP 7.0.33
0.23995208740234
0.26950597763062
0.26219797134399

CentOS 6.5+Nginx+PHP 5.6.40
0.39044785499573
0.39617800712585
0.43448114395142

CentOS 6.5+Apache+PHP 5.3.3 (自带源)
0.66925501823425
0.71402907371521
0.69028401374817

CentOS 5.8+Apache+PHP 5.1.6 (自带源) (我曾经的主力环境,超省内存)
1.0847749710083
0.85708403587341
1.1157069206238

Debian 7.0+Apache+PHP PHP 5.4.45 (自带源) (超省内存)
0.40000104904175
0.44710516929626
0.45367884635925

Ubuntu 16.04.3+Apache+PHP 7.4.0 (我的主力环境)
0.056440114974976
0.05810809135437
0.059491872787476

Ubuntu 16.04.3+Apache+PHP 7.3.9
0.08572793006897
0.10723900794983
0.09276294708252

Ubuntu 16.04.3+Apache+PHP 7.2.22
0.099550008773804
0.099750995635986
0.09430193901062

Ubuntu 16.04.3+Apache+PHP 7.1.32
0.10897207260132
0.1005711555481
0.091553211212158

Ubuntu 16.04.3+Apache+PHP 7.0.33
0.10013198852539
0.10001993179321
0.098648071289062

Ubuntu 16.04.3+Apache+PHP 5.6.40
0.24123692512512
0.23330211639404
0.2283730506897

Ubuntu 16.04.3+Nginx+PHP 7.4.0
0.052397966384888
0.056506156921387
0.057173013687134

Ubuntu 16.04.3+Nginx+PHP 7.3.9
0.10905909538269
0.10405087471008
0.096883058547974

Ubuntu 16.04.3+Nginx+PHP 7.2.22
0.10630106925964
0.098078966140747
0.10220098495483

Ubuntu 16.04.3+Nginx+PHP 5.6.40
0.27832102775574
0.2606189250946
0.2623918056488

Ubuntu 14.04+Apache+PHP 5.5.9 (自带源) (我的主力环境)
0.26224207878113
0.27070307731628
0.2564959526062

Ubuntu 12.04+Apache+PHP 5.3.10 (自带源) (我的主力环境,超省内存)
0.51135420799255
0.48402404785156
0.47420406341553

最后,发现一个很有趣的现象,Ubuntu 16.04.3,我在2016年时第一次使用VPS,那时候就已经有这个版本。一个月前,用自带源安装PHP,版本是7.0,Ubuntu 16+自带的PHP 7.0,有个bug,PHP不执行,这是所有系统里唯一一个PHP不执行的环境。

今天突然发现就在近期,大约是近期的几天里,Ubuntu 16的自带PHP安装源,已经更新为PHP 7.3.9

不过,如果要安装PHP 7,还是使用PHP 7.4好一点。Ubuntu、Debian下的PHP 7.4.0是PHP 7.3.9速度的1.9~2.1倍。

2019-10-04 07:35更新
今天用VMWare+Ubuntu 16.03在本机测试,果然,本机版的Ubuntu 16.03的PHP自带软件源,已经更新为PHP 7.3.9,和服务器版的Ubuntu 16.03一样。

国外很多VPS商家,提供的Ubuntu的最高版本目前仍然是Ubuntu 16,只有少数商家提供Ubuntu 18。
Ubuntu 16如今也是一个不错的选择。
Ubuntu 14无法安装PPA+PHP 7,所以能安装PHP 7的最低版本是Ubuntu 16。
Ubuntu 15、17已被抛弃,无法使用。
(更新完)

2019-10-04 10:03更新
各Linux系统开机、重启时间对比:
(测试方法,输入Shell命令:reboot。此时,同时按秒表开始计时。用CMD ping服务器,当出现ping值时,表示已经开机。由于切换不同的系统,需要重装一次系统,所以这项测试需要慢慢更新,每天更新一点。)

Ubuntu 12.048秒开机
Ubuntu 16.0411秒
Debian 8.5 Minimal15秒
Debian 9.1 Minimal10秒
CentOS 5.319秒
Debian 8.015秒
Debian 7.86秒

8条评论:
1   执迷不悟 2019-10-05 02:37
第一次尝试个人电脑安装Linux深度使用是用的Debian 9,据说很多大佬喜欢使用比例比较高。不过个人使用的VPS都是CentOS 7,看了勇哥的测试,考虑以后可以慢慢过度回Debian了哈哈。

自由勇 2019-10-05 07:24
是的,有的人用Debian很多年。
我用的时间不长,都是用服务器版。桌面版只用过CentOS 5、6,用的是远程桌面,因为我这边实在无法访问国外被wall的网站,需要登录Gmail修改设置时,就用CentOS 5、6远程桌面+火狐,Gmail平时转发到国内的邮箱。远程桌面使用特别慢。

2   自由勇 2019-10-05 07:52
我的服务器使用经历:
2001年开始 使用中华网、各大网站的免费空间,只支持HTML。
2002年9月 使用第1个收费主机,只支持HTML。
2002年10月 使用第2个收费主机,支持ASP。
2002年-2009年,使用国内ASP虚拟主机。
2009-2016年,使用国外PHP虚拟主机。
2016年8月-2018年11月,全部使用CentOS 5的VPS,超省内存,自带源PHP 5.1.6,速度也很快,比虚拟主机快很多。
这些VPS是年付$5.1,年付$8.75,比虚拟主机还便宜很多。
2018年11月至今,把所有CentOS 5的VPS都转到Ubuntu 12,本博文的测试结果,Ubuntu 12自带的PHP 5.3是CentOS 5自带的PHP 5.1速度的2倍多。果然,访问中还是有很明显的提升。内眼观察,大约快20%~30%。
2019年6月,使用Ubuntu 14,因为Ubuntu 12不再支持Let’s Encrypt。
2019年7月,使用Ubuntu 18+自带源PHP 7.2,速度有了明显的提升,之前一直用PHP 5。
2019年8月底,使用Ubuntu 16+PPA+PHP 7.4,支持rc.local,速度又有了明显的提升,速度是PHP 7.2、7.3的2倍。
2019年9月底,Debian 8.0+sury+PHP 7.4,比Ubuntu 16省了将近一半的内存,速度一样,支持rc.local。
3   j 2019-10-09 20:25
问一下,debian编译安装和源安装的两种方式性能会不会有差别

自由勇 2019-10-09 21:19
这个我没有试验过,理论上应该没有差别。因为这两者的安装过程其实一样,编译安装相当于手动配置,源安装相当于自动配置。

4   g 2019-10-10 21:54
这个其实可以理解为CentOS对KVM或OVZ的Guest支持不好。
也许是RHEL为了企业兼容性考虑,没有像标准内核那么激进。
5   Buster 2019-10-10 22:24
1998年开始用国内免费空间
1999年吧,第一次接触到红帽子,不过没玩下去
2004年开始用国内收费虚拟主机空间
可能是2006年之后同时又开始用国外免费虚拟空间
2018年才开始用海外VPS,并且正式接触到现代版本的CentOS
2019年开始摸到了Debian,目前为止用得次数较多的是Jessie和Buster,比较满意Buster,因为它的LEMP/LAMP软件比较令人满意(除了Apache离2.4.39只差0.0.01),连OpenSSL都已经到了1.1.1版

自由勇 2019-10-10 22:33
是的,使用VPS感觉太棒了!

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:1980-09-26 (39周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2019 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue