不同的javascript for循环的性能

Geo*_*off 1 javascript performance for-loop

根据jsperf的测试,使用以下形式在javascript中进行循环:

for (var i = 0, item; item = itemsArray[i++];){
   item = Math.random();
}
Run Code Online (Sandbox Code Playgroud)

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

另外,我查看了一些javascript库的来源,比如jQueryKnockoutjs,他们不在代码中使用这个构造.

这让我产生了怀疑.如果这种形式的循环速度快得多,那么为什么流行的图书馆不是由更聪明的人编写的呢?

我错过了这个循环不如表面看起来那样好的东西吗?

Ber*_*rgi 5

我错过了这个循环不如表面看起来那样好的东西吗?

每次item你的单身itemsArray都是假的,你的病情就不能达到预期的效果.

实际上,这也是你的测试说它会更快的原因,那只是因为它甚至没有做第一次迭代itemsArray[0] = 0.迭代的更新的jsperf[1..1001]表明for循环执行非常相似,你的实际上是一个较慢的.

为什么不流行的图书馆,人们写的更聪明,使用它?

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