回复 (8)
跑测试的机器配置如何?为什么差距这么大。 sam@samqiu-desktop:/data/ruby$ time ruby fibonacci.rb 165580141 real 0m42.010s user 0m41.819s sys 0m0.052s sam@samqiu-desktop:/data/ruby$ time ruby fibonacci.rb 165580141 real 0m41.976s user 0m41.779s sys 0m0.012s
哈哈,这么高级,不过这不像是递归执行的吧?这个测试只是想测试所有语言的递归性能来做对比。。。如果改成非递归形式,就没意思了。。。
lua很厲害啊
lua &jit lua function fibonacci(n,acc1,acc2) if n == 0 then return acc1 end return fibonacci(n - 1,acc2,acc1+acc2) end io.write(fibonacci(40,1,1), "\n")
其实也是递归,不过是在编译期完成。靠着编译期运算C++可以在很多性能测试里作弊……
尖括号都没了…… 上面的代码看这里 http://ideone.com/66zj4
How about C++ meta programming, it's a bit of cheating :-) $ g++ fibonacci.cc $ time ./a.out 165580141 real 0m0.003s user 0m0.001s sys 0m0.002s #include template struct fibonacci { enum { Result = fibonacci::Result + fibonacci::Result }; }; template struct fibonacci { enum { Result = 1 }; }; template struct fibonacci { enum { Result = 1 }; }; int main(int argc, char *argv[]) { printf("%d\n", fibonacci::Result); return 0; }
very interesting!