【发布时间】:2013-04-04 19:07:57
【问题描述】:
在尝试加速递归函数时,我注意到了一些特殊情况。当我将用于记忆的对象作为参数而不是全局变量传递给函数时,代码执行变得相当慢。
所以不要这样:
var memoizationObj = {};
function factorial(n) {
// factorial code
};
var a = factorial(10);
我把代码改成这样:
function factorial(n, memoizationObj) {
// factorial code
};
var b = factorial(10, {});
代码执行速度变慢了 > 50 倍。
为什么会这样?这里是jsperf 的完整代码。
【问题讨论】:
-
请看这篇文章,这是我最喜欢编写高效 javascript 代码的文章之一:oreilly.com/server-administration/excerpts/even-faster-websites/…
标签: javascript performance recursion memoization