Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中什么更快?循环还是重复的函数调用?_Javascript_Performance - Fatal编程技术网

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();
}