斐波那契数在javascript中的另一种算法

本文通过两种不同的JavaScript实现方式对比,展示了斐波那契数列计算的性能优化过程。一种是递归方法,另一种是迭代方法。后者在Node.js和Chrome上的表现显著优于前者。

今天晚上,闲来无事,就去翻看了一下javascript经典实例,看到其中利用javascript对斐波那契数的计算

console.time('demo');
var fib = function (n) {
  return n<2?n:fib(n-1)+fib(n-2);
}
console.log(fib(40));
console.timeEnd('demo');
//102334155
//demo: 1665.563ms

下面就是结果,感觉这性能确实比较差劲,书上利用了缓存计算来提升性能,性能提升较明显,但还是未达到极致

后来自己就想到对上一个算法换一种思路,性能应该会得到较大提升,这是个人试验的例子

console.time('demo');
function num(ele) {
  var temp=[];
for (let i=0;i<=ele;i++){
  if (i>1){

    temp[i]=temp[i-1]+temp[i-2];
  }
  else{
    temp[i]=i;
  }
}
return temp[ele];
}
console.log(num(1100));
console.timeEnd('demo');
//node上跑出的结果:  3.4428592852410256e+229
//             demo: 3.119ms

//chrome上跑出的结果 3.4428592852410256e+229
//                 demo: 0.607ms

node和chrome跑同一个程序耗时差距极其明显,个人感觉目前6.9版本node的性能远未达到其瓶颈,未来node仍有很大的发展空间

 

转载于:https://my.oschina.net/fymoon/blog/789399

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值