减少Javascript函数调用开销

时间:2011-03-03 15:02:12

标签: javascript

我见过声称加速函数调用开销的Javascript代码,如:

function foo() {
  // do something
}

function myFunc() {
   var fastFoo = foo; // this caches function foo locally for faster lookups
   for (var i = 0; i < 1000; i++) {
       fastFoo();
   }
}

我没有看到这可以如何加快javascript函数调用开销,因为在我看来它只是一个内存查找,无论是在当前堆栈的顶部(对于fastFoo)还是在堆栈中的其他位置(我我不确定全局上下文存储在哪里......任何人?)。

这是古代浏览器的遗物,完整的神话还是真正的改进增强剂?

2 个答案:

答案 0 :(得分:2)

这完全取决于范围。访问本地作用域总是比访问父作用域更快。如果在父作用域中定义了该函数,则在进行本地引用时通常会看到加速。

如果这个加速很重要取决于很多事情,只有你的情况下的测试才会证明是否值得这样做。

速度的差异取决于范围的差异。

a.b.c.d.e.f.g.h();范围内调用x.y.z比在a.b();范围内调用a.b.c要慢(不是最漂亮或最正确的示例,但它应该保留它的目的是:)

答案 1 :(得分:2)

这将导致无限小的性能提升 不要这样做。