javascript - 不同javascript for循环的性能

标签 javascript performance for-loop

根据 jsperf 的测试具有这种形式的 javascript 中的 for 循环:

for (var i = 0, item; item = itemsArray[i++];){
   item = Math.random();
}

比典型的 for 循环快几个数量级,即使在 IE8 等较旧的浏览器中也是如此。我还没有找到对这个循环结构的另一个引用,我想知道为什么它要快得多?

此外,我还查看了一些 javascript 库的源代码,例如 jQueryKnockoutjs并且他们不在代码中使用此构造。

这让我产生了怀疑。如果这种形式的循环要快得多,为什么由更聪明的人编写的流行库不使用它?

我是否错过了这个循环不如表面上看起来那么好的地方?

最佳答案

Am I missing something where this loop is not as good as it looks on the surface?

每当您的 itemsArray 中的单个 item 为假时,您的条件就无法达到预期。

实际上,这也是为什么您的测试说它会更快的原因,那只是因为它甚至没有像 itemsArray[0] = 0 那样进行第一次迭代。一个updated jsperf迭代 [1..1001] 表明 for 循环的执行非常相似,您的循环实际上是稍慢的循环之一。

why don't popular libraries, written by people much smarter, use it?

他们专注于良好的算法、可读性、可用性、跨浏览器支持(当然还有正确性),而不是微优化。

关于javascript - 不同javascript for循环的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962960/

相关文章:

javascript - 播放时获取 youtube 视频的当前时间

javascript - 如何获取 Jquery 数据表的第一列作为复选框

javascript - 在javascript中将匿名函数作为参数传递

由于 Google Adwords 导致的性能问题

JavaScript setInterval() 性能

JavaScript 过滤相似字符串

C++:从星号不是乘法符号的字符串中删除所有星号

java - 像半球一样在java中打印图案

c++ - 如何让字符串输入n次?

linux - 带变量的for循环