问题描述
实现一个计算斐波那契数列的递归函数, rust代码和js代码在我的电脑上耗时都是11秒, js甚至比rust快一点
问题出现的环境背景
本人刚接触rust,听说它的性能可以和C++媲美,所以就想比较一下到底比js快多少,可是程序跑出来的结果和想象中的不太一样,顺带一提,在我同事的电脑上用C++跑耗时7秒,当传入参数为50时,他那边C++耗时73秒,我这边rust耗时132秒,差别太大了
相关代码
rust代码:
extern crate stopwatch;
use stopwatch::{Stopwatch};
fn fid(num: u64) -> u64 {
match num {
0 => 0,
1 => 1,
_ => fid(num - 1) + fid(num - 2)
}
}
fn main(){
let sw = Stopwatch::start_new();
let num = fid(45);
println!("{}",num);
println!("耗时: {}ms", sw.elapsed_ms());
}
js代码:
function fid(n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fid(n-1) + fid(n-2)
}
fib(45)
你期待的结果是什么?实际看到的错误信息又是什么?
按理来说rust的速度应该比js快很多才对吧?希望大佬们能指点一下我是不是rust代码哪里用错了,或者是有什么地方可以优化的,谢谢.