Javascript中什么更快?循环还是重复的函数调用?
这两位中哪一位执行(计数)更快 或Javascript中什么更快?循环还是重复的函数调用?,javascript,performance,Javascript,Performance,这两位中哪一位执行(计数)更快 或 如果循环代码/函数变长,首选的方式会改变吗?如果迭代次数很少,则无所谓。调用一个函数会有更多的开销,但是对于一个短循环来说,这并没有太大的区别 第二种方法受堆栈大小的限制。如果迭代次数过多,它将耗尽堆栈空间并崩溃 因此,第一种方法的运行速度更快,但整个问题都没有意义,因为第二种方法在循环中崩溃的风险很大,循环足够长,速度会有所不同。这只会导致堆栈溢出,因为递归没有结束条件: var i = 0; inc = function(){ i++; i
如果循环代码/函数变长,首选的方式会改变吗?如果迭代次数很少,则无所谓。调用一个函数会有更多的开销,但是对于一个短循环来说,这并没有太大的区别 第二种方法受堆栈大小的限制。如果迭代次数过多,它将耗尽堆栈空间并崩溃
因此,第一种方法的运行速度更快,但整个问题都没有意义,因为第二种方法在循环中崩溃的风险很大,循环足够长,速度会有所不同。这只会导致堆栈溢出,因为递归没有结束条件:
var i = 0;
inc = function(){
i++;
inc();
}
对于足够大的i
,这将比标准循环更快地失败
更一般地说,调用函数的开销大于循环。当函数有助于代码的可重用性或可读性时,创建函数。循环很快。尝试两种方法,对
i
使用较大的值。第二种方法不是简单地重复,而是递归的。而且永远不会结束(我的意思是,直到堆栈溢出)。insane.JSPerf可以很容易地帮到你:。每当问题像谁更快,A还是B
,唯一真正的答案就是设置一个基准并自己测试它们。
var i = 0;
inc = function(){
i++;
inc();
}
var i = 0;
inc = function(){
i++;
inc();
}