欢迎大家来到IT世界,在知识的湖畔探索吧!
为了解js中函数递归算法与循环算法哪个更快,本人分别用递归和循环的方式计算1000次随机数并以此生成数组,以此简单测试比较。
测试环境如下:(平时自用电脑)
[硬件]
CPU:I5-8250U
内存:8GB
[软件]
系统:windows10 H2 (X64)
浏览器:Microsoft Edge(版本 85.0.564.67 (官方内部版本) (64 位))
Google Chrome (版本 92.0.4515.131(正式版本)(32 位))
测试代码如下:
<code>
“
function testd(a,b){
function createArr(m,s){var n=Math.round(Math.random()*100); return m?createArr(m-1,s).concat(s?s:n):[]}
var t1=new Date();
console.log(“start: “,t1.getMilliseconds());
console.log(createArr(a,b));
var t2=new Date();
console.log(“end: “,t2.getMilliseconds());
return
}
function testx(a,b){
var t1=new Date();
console.log(t1.toLocaleString()+”:”+t1.getMilliseconds());
var arr=[];
for(var i=0; i<a; i++){
arr.push(Math.round(Math.random()*100));
}
console.log(arr);
var t2=new Date();
console.log(t2.toLocaleString()+”:”+t2.getMilliseconds());
return
}
“
</code>
简约说明:函数testd用于测试递归算法时间;testx用于测试循环算法时间。两种都是生成一个长度为1000的数组,其中每一项都填充一个随机数。
结果如下:
图中start表示开始时间;end表示结束时间,单位为”毫秒”。目前看来,不同浏览器运行结果相差不明显。
递归运算时间(testd):
两个浏览器分别是:开始时间为495和69,其结束时间为502和79;实际使用时间分别为7毫秒和10毫秒。
循环运算时间(testx):
两个浏览器分别是:开始时间为774和782,其结束时间为775和783;实际使用时间分别为1毫秒和1毫秒。
对比非常明显:
同样是计算1000次,用循环才使用1毫秒的时间,而递归算法是循环算法的7至10倍。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/37236.html