在JavaScript中,为什么“反向”循环比“for”快一个数量级?

时间:2012-06-01 10:23:25

标签: javascript performance for-loop while-loop v8

在这些基准测试http://jsperf.com/the-loops中,Barbara Cassani表示“反向时间”循环更快,

while (iterations > 0) {
    a = a + 1;
    a = a - 1;
    iterations--;
}

比通常的“for”循环:

for (i = 0; i < iterations; i++) {
    a = a + 1;
    a = a - 1;
}

为什么?

更新

好的,忘掉它,测试中有一个错误,iterations = 100,每页只执行一次。因此,减少它就意味着我们并没有真正进入循环。遗憾。

2 个答案:

答案 0 :(得分:2)

除了初始测试中的大错误,以下是结果:

  • for vs while没有任何区别
  • ><优于!==

http://jsperf.com/the-loops/15

答案 1 :(得分:1)

这是因为每个JavaScript引擎的内部细节。不要将它用于优化,因为你不能逻辑地指望它随着引擎的变化总是更快。例如,请查看last revision of test you've linked,并注意如果最近的浏览器存在差异,则差异要小得多。

相关问题