今天晚上,闲来无事,就去翻看了一下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仍有很大的发展空间