哪个for循环在javascript中效率更高?

时间:2013-03-07 13:18:58

标签: javascript for-loop comparison performance

哪一个更有效率?

// < 11
for(var i = 0; i < 11; i++){ ... }

// <= 10
for(var i = 0; i <= 10; i++){ ... }

我不确切知道for函数是如何工作的,但我假设< 11更有效率,因为在<= 10中似乎在每个10比较中它都检查过如果它也是相等的,不仅仅是更小,所以它必须进行2次比较,而不是一次。

我是对的,或者这是如何运作的?

2 个答案:

答案 0 :(得分:6)

如果有任何差异,它会非常小。您应该使用更易于维护的代码。通常首选<运算符,因为在计数器为< x时从0循环会产生x次迭代。

然而,任何差异都不是因为<=进行了两次比较,因为它没有。

比较两个数值时,计算机实际上会减去它们,并检查发生了什么。如果结果是正数,负数或零,则不同的运算符会给出真实的结果:

operator:   true when result is:
----------  ---------------------
<           negative
<=          not positive
==          zero
>           positive
>=          not negative

答案 1 :(得分:6)

如果您遇到性能问题,请始终在jsPerf.com上解决。

使用this test case

  • 在FF18中,第一个循环可以忽略不计
  • 在FF19中,第二个循环可以忽略不计。
  • 在Chrome 25中,它们完全相同。

实际上这至多是微预优化,你应该把重点放在其他地方。