注意:要在该基准测试套件上仅运行以下两项测试,请点击Basic reverse for loop
和Falsy reverse for loop
。
下面列出的操作/秒在Chrome 32,Win 7 64位上。
此循环
for (var i=a.length - 1; i >= 0; i--) { } // 1,161,089 ops/sec
比
快得多for (var i=a.length; i--;) { } // 870,837 ops/sec
在Chrome 32,Firefox 27和Opera 12& 19.它们在IE(5 - 11)中大致相同,而且在Safari Windows(5.1.7)中,虚假循环实际上更快。这似乎与循环条件为假的没有任何关系 - 该套件中有另一个基准用于该比较。
“基本”循环比Chrome 32,Win 7 64位上的“虚假”循环快约33%。为什么呢?
答案 0 :(得分:0)
第二个循环:for (var i=a.length; i--;) { }
迭代直到i--
返回false,因为该部分是在循环的条件部分写入的。
i--将返回false,因此两个循环的功能相同。
然而,第二个循环导致额外的任务:将a.length和0之间的每个值转换为布尔值,这比整数比较更耗时。