php7 和 php8 在 OpenLiteSpeed、nginx 上的性能测试
OpenLiteSpeed 版本为 1.6.21,php 版本是 7.4 和 8.0,ngnix 版本为 1.20,全部是编译安装。测试结果如下。
| 环境 | 正常 | opcache | 横向对比 |
| OpenLiteSpeed php7.4 | 4.10560297966 | 3.7856299877167 | 1.08 |
| OpenLiteSpeed php8.0 | 4.316696882247 | 4.075221061706 | 1.06 |
| Nginx php7.4 | 17.157423019409 | 11.849323034286 | 1.45 |
| Nginx php8.0 | 16.670356035233 | 1.5372290611267 | 10.84 |
测试服务器为阿里云 2 核 2G,其实测试的都是单核性能,几核几 G 其实关系不大。测试代码如下:
<?php function msec() { list($sec,$msec) = explode(' ', microtime()); return (floatval($sec) + floatval($msec)) ; } $s_time = msec(); function fib($n) { if ($n == 1 || $n == 2) { return 1; } return fib($n - 1) + fib($n - 2); } echo fib(40); $e_time = msec(); echo '<br>'; echo $e_time - $s_time;
php7 和 php8 在 OpenLiteSpeed、nginx 上的性能测试(包括是否开启 opcache)总结:
1、php8.0 在未开启 opcache 的时候和 php7.4 性能差距不大,在误差范围内,多次测试,略有提升。
2、php8.0 在开启 opcache 的时候和 php7.4 对比性能提升极为显著,达到了 10 倍以上的提升,可以说是质的飞跃。
3、OpenLiteSpeed 对 php8 以前版本的优化确实好,在 php8.0 加 opcache 的测试加入前对比 ngnix 获得了绝对的优势,4 倍以上的性能提升,而且不需要开启 opcache。
4、OpenLiteSpeed 对 php8.0 的优化却不够,对比 php7.4 几乎没有提升。
5、OpenLiteSpeed 中开启 opcache 对性能影响很小,甚至有些测试中还会降低。
建议:
如果程序兼容,尽可能升级 php8,同时开启 opcache,性能提升实在是太明显了。
补充:添加一个 go 语言的测试
package main import ( "fmt" "time" ) func main() { var sTime = GetMicroTime() fmt.Println(sTime) fmt.Println(fib(40)) var eTime = GetMicroTime() fmt.Println(eTime) fmt.Println(float32(eTime-sTime) / 1000000.00) } func GetMicroTime() int64 { return time.Now().UnixNano() / int64(time.Microsecond) } func fib(n int) int { if n == 1 || n == 2 { return 1 } return fib(n-1) + fib(n-2) }
同样的服务器,运行结果,0.588151 秒,运行效率大约是 php8+opcache 的 2.6 倍,从这个测试来看,php8 的优化确实很好了,考虑到 php 程序开发的速度和大量的轮子,大部分 web 程序用 php 来开发显然比用 go 更合适。
原文:https://my.oschina.net/u/3782143/blog/5083694
浙公网安备 33010602011771号