为什么递归似乎比JavaScript中的for循环要慢得多?

时间:2019-02-05 16:43:59

标签: javascript node.js

我想到了一篇文章,指出在带有Node.js https://hackernoon.com/aws-lambda-go-vs-node-js-performance-benchmark-1c8898341982的AWS Lambda上运行时,递归比非递归方法要慢得多。

我对这个发现有点兴趣,并试图比较这两个。我的发现与本文所指出的非常相似,与简单的斐波那契示例相比,递归比for循环慢5倍之多。 https://codesandbox.io/s/y0xvn96xzv

JavaScript中的这种影响是什么原因或原因?同样,我很高兴听到在使用JavaScript调用堆栈或一些通用规则时是否还有其他类似的巧合,应避免什么以及避免性能问题的“最佳实践”。

1 个答案:

答案 0 :(得分:1)

递归通常比迭代慢,这是因为除了管理循环内容之外,还必须管理调用堆栈框架。因此,最后,将运行更多代码。