什么是Javascript更快?一个循环或重复的函数调用?

时间:2012-08-20 11:27:16

标签: javascript performance

这两位中的哪一位执行(计数)更快?

var i = 0;
while(true){
    i++;
}

var i = 0;
inc = function(){
    i++;
    inc();
}

如果循环代码/函数变长,首选方式是否会改变?

2 个答案:

答案 0 :(得分:7)

这只会给你一个堆栈溢出,因为递归没有结束条件:

var i = 0;
inc = function(){
    i++;
    inc();
}

对于足够大的i,这将比标准循环更快失败。

更一般地说,调用函数的开销大于循环。在帮助您的代码重用或可读时帮助您创建一个函数。循环很快。

答案 1 :(得分:4)

如果迭代次数很少,那就无所谓了。调用函数会有更多的开销,但这对短循环没有太大的影响。

第二种方法受堆栈大小的限制。如果你有太多的迭代,它将耗尽堆栈空间并崩溃。

所以,第一种方法会运行得更快,但整个问题都没有实际意义,因为第二种方法在循环中崩溃的风险很大,足以让速度发挥作用。