php go python 语言斐波那契数列递归性能测试
2022-03-22 本文已影响0人
农夫三拳有点悬
1、测试环境:
CPU:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz
内存:32G
系统:win10
2、软件版本:
Python 3.10.2
PHP 7.2
GO 1.18
3、本文主要通过递归的算法运算斐波那契数列从1到34,目的是测试各语言递归性能,斐波那契数列其它算法在此不做讨论。
python代码
#!/usr/bin/python
# coding=utf-8
import time
def fib(x):
if x < 2:
return x
return fib(x - 2) + fib(x - 1)
t1 = time.time()
for x in range(1, 35):
print(fib(x), end=' ')
print('time elapsed: %.2f' % (time.time() - t1))
php代码
<?php
function fib($x)
{
if ($x < 2) {
return $x;
}
return fib($x - 2) + fib($x - 1);
}
$t1 = microtime(true);
for ($x = 1; $x < 35; $x++) {
echo fib($x) . ' ';
}
printf("time elapsed:%.2f", microtime(true) - $t1);
go代码
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Now()
for x := 1; x < 35; x++ {
fmt.Print(fib(x), " ")
}
fmt.Printf("time elapsed:%.2f", time.Since(t1).Seconds())
}
func fib(x int) int {
if x < 2 {
return x
}
return fib(x-2) + fib(x-1)
}
测试结果:
python 3.83s
php 1.56s
go 0.07s
总结:go确实强悍,python出乎意料,竟然比php还慢。
后来怀疑是不是windows系统问题,所以又在Centos7.9下跑了一次(i5(四代)+8G),结果:go持平、php提升到1s,python进一步下降到5.6s。