为了账号安全,请及时绑定邮箱和手机立即绑定

rust为什么跑得比js慢

rust为什么跑得比js慢

MM们 2019-02-25 16:17:11
问题描述实现一个计算斐波那契数列的递归函数, 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代码哪里用错了,或者是有什么地方可以优化的,谢谢.
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

我机器上rust编译release测试9秒,js29秒
你是不是debug模式编译测得,那自然慢

查看完整回答
反对 回复 2019-03-09
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我机器上
js : 37.905s
rust : 7.6654385s

fn fid(num: u64) -> u64 {    if num > 1{
        fid(num - 1) + fid(num - 2)
    }else if num == 1{        1
    }else{        0
    }
}

改一下
rust : 6.6643812s


查看完整回答
反对 回复 2019-03-09
  • 2 回答
  • 0 关注
  • 1314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信