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

posted @ 2022-08-31 10:54  kjcy8  阅读(1732)  评论(0)    收藏  举报