2

哪个效率更高?

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

或者

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

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

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

4

2 回答 2

6

如果有任何区别,那将是非常小的。您应该使用更易于维护的代码。通常<首选运算符,因为从 0 开始循环,而计数器是< x迭代x

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

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

operator:   true when result is:
----------  ---------------------
<           negative
<=          not positive
==          zero
>           positive
>=          not negative
于 2013-03-07T13:25:57.047 回答
6

每当您有性能问题时,请务必在jsPerf.com上提出。

有了这个测试用例

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

实际上,这充其量只是一个微预优化,您可能应该将注意力集中在其他地方。

于 2013-03-07T13:29:04.803 回答