最近在休息的时候特地花了一点时间,把go、php7.4 php8.1 swoole4在循环 10亿内求和,比较各项耗时时间。顺便让 php8开启JIT功能(关闭JIT)都测试了一遍。
测试目标:计算 1+2+3+...+n 的和,n=10亿
(暂时到10亿), 如果想测试更大的数据,可以复制下面程序自己稍作修改就可以了。
代码示例:
php7 结果
php8 结果(代码如php7 一致,可复用,且已开启jit)
php8 结果(关闭jit)
查看是否关闭jit,php.ini配置文件中编辑如下即可,并重启php-fpm( pkill -USR2 php-fpm)
浏览器查看下是否关闭jit成功与否即可。
结论一:在php各版本测试得出的结果可以看出
php8性能较于php7有了较高的提升,具体多少我们可以查看php8官方给的性能测试案例。
php8在开启jit的时候,比未开启jit,效率要高很多。
swoole4:代码和php写法基本一致,区别就是安装php后在安装下swoole扩展,并在php.ini配置文件开启该扩展
代码示例:我创建的是http 服务,
服务中断执行:php swoole_http.php
// 创建http服务
$http = new Swoole\Http\Server("0.0.0.0", 9503);
$http->on("Start", function () {
echo "Swoole Http Server 已成功启动";
});
$http->on("Request", function ($request, $response){
list($m1, $s1) = [memory_get_usage(), microtime(true)];
$sum = 0;
for ($i = 1; $i
$sum += $i;
}
list($m2, $s2) = [memory_get_usage(), microtime(true)];
$string = sprintf("耗时: %.6f 秒, 占用内存: %.3f MB", $s2 - $s1, ($m2 - $m1) / 1024 / 1024);
var_export([$sum, $string]);
});
$http->start();
结果:看最终执行结果,swoole的性能比 php8 又有进一步的提升
最后我们看看 Go的执行效果吧(拭目以待吧),当然 Go 也是最近才接触,很多Go的同学都说Go的一大堆好(如静态编译、协程、高并发),当然我也承认。
go返回结果,卧槽,太牛逼了,不到一秒。看来go要值得好好研究下啊,
工作这么多年,一直搞的php,看来是得花点时间并沉下心研究下其他一门语言了。
领取专属 10元无门槛券
私享最新 技术干货