笔者采用计算Fibonacci数列第40项的平均用时,在递归调用方面来度量语言性能。
笔者所使用的测试平台是安装Microsoft Windows 10 专业版(版本10.0.18363)操作系统,带有Inter(R) Core(TM)i7-5600处理器与8GB内存的联想Thinkpad x250个人笔记本电脑。
Python测试用例(版本3.8.3)
from time import *
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
begin = time()
result = fib(40)
end = time()
print('fib(40)=', result)
print('time=',(end-begin)*1000, 'ms')
Lua测试用例(版本5.1.5)
#!/usr/local/bin/lua
require("os")
function fib(n)
if n <= 2 then
return 1
else
return fib(n -1) + fib(n - 2)
end
end
local start = os.clock()
local result = fib(40)
local end_time = os.clock()
print("fib(40)=", result)
print(string.format("time=%.2fms", (end_time - start)*1000))
Plang测试用例(版本1.3.17)
import std::IO;
import std::Type;
import std::TIME;
class Test
{
static fib(n->int)->int
{
return n<=2 ? 1 : Test.fib(n-1) + Test.fib(n-2);
}
public static main()
{
start->long = TIME.clock();
result->int = Test.fib(40);
end->long = TIME.clock();
IO.printf("fib(40)=%d\n", Type.get(result));
IO.printf("time=%Dms", Type.get(end-start));
}
}
运行截图
Python
Lua
Plang
测试结果
Lua
12170.00ms
12197.00ms
12416.00ms
平均用时:12261.00ms
Plang
15503.00ms
15391.00ms
15414.00ms
平均用时:15436.00ms
Python
23489.57ms
21709.60ms
23390.60ms
平均用时:22863.26ms
方法递归调用性能:Python<Plang<Lua
源代码远程仓库:https://github.com/ChivenZhang/plang-demo
自研产品介绍:Plang高级编程语言