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

Ada*_*dam 2 javascript comparison performance for-loop

哪一个更有效率?

// < 11
for(var i = 0; i < 11; i++){ ... }
Run Code Online (Sandbox Code Playgroud)

要么

// <= 10
for(var i = 0; i <= 10; i++){ ... }
Run Code Online (Sandbox Code Playgroud)

我不知道for函数究竟是如何工作的,但我认为< 11它更有效率,因为在<= 10每次10比较中它似乎也检查它是否相等,而不仅仅是更小,所以它必须进行2次比较而不是一.

我是对的,还是这个有用吗?

Guf*_*ffa 6

如果有任何差异,它将非常小.您应该使用更易于维护的代码.通常<操作符是首选,因为在计数器< x给出x迭代时从0开始循环.

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

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

operator:   true when result is:
----------  ---------------------
<           negative
<=          not positive
==          zero
>           positive
>=          not negative
Run Code Online (Sandbox Code Playgroud)


Cha*_*had 6

无论何时遇到性能问题,请始终在jsPerf.com获取.

有了这个测试用例:

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

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