array.forEach比本机迭代运行得更快?怎么样?

Sea*_*son 8 javascript testing performance

http://jsperf.com/testing-foreach-vs-for-loop

我的理解是,测试案例2的运行速度应该比测试案例1慢 - 我想看看速度有多慢.当我看到它运行得更快时,想象一下我的惊喜!

这里发生了什么?在幕后优化?或者.forEach更清洁,更快?

在Windows Server 2008 R2/7 64位上以32位Chrome 1.5.0.1025.142进行测试

jba*_*bey 9

您的for循环缺少许多迭代优化,例如:

  • 缓存数组长度
  • 向后迭代
  • 使用++计数器而不是计数器++

这些是我听过和使用的,我相信还有更多.如果内存对我来说是正确的,则向后迭代while循环是所有循环结构中最快的(在大多数浏览器中).

有关示例,请参阅此jsperf.

编辑:后缀与前缀perf测试的链接,并向后迭代.我无法找到使用+ = 1而不是++的参考,所以我已将其从列表中删除.