【发布时间】:2014-04-05 00:05:36
【问题描述】:
在阅读 Quintus game engine 的源代码时,我发现他们大量使用 for 循环,而不是原生 forEach。
我最初的想法是原生的 forEach 方法会比标准的 for 循环稍微快一些。然而,在用these benchmarks 测试了我的理论之后,for 循环结构似乎要快得多。
四处探查之后,我似乎无法找出引擎盖下发生了什么。有谁知道造成巨大差异的原因吗?
编辑:为了清楚起见,我问的是“为什么”是这种情况。我不是在问“哪个更快”。
【问题讨论】:
-
一个函数调用涉及不小的开销,
.forEach进行了大量的函数调用。 -
我添加了一个可能值得探索的新版本:var foo = ""; var fn = 函数(x){ foo += x; }; for(x = 0; x
-
@Pointy 这很奇怪。我原以为引擎会内联这些功能,如下所示:jsperf.com/canvas-pixelwise-manipulation-performance。这里有什么东西可以阻止内联吗?
-
@Pointy,啊……你说得对。我想我现在明白了。内联是对 javascript 代码本身的运行时修改。由于 forEach 是原生的,因此它不会发生在同一级别进行内联。
-
重复标记没有什么意义。链接的问题问哪个更快,这个问题问为什么。
标签: javascript arrays performance foreach