减少循环排序Javascript

时间:2014-08-12 06:56:53

标签: javascript

这实际上是我关于javascript的第一篇文章。想知道,以下代码的性能是因为它是一个“递减while循环”,while循环中有一个Incrementing变量。

var i = data.d.length;
var i_counter=0;


while (i--)
{
   console.log(i_counter++)
}

我添加i_counter ++的原因是为了排序目的。它会略微影响数千条记录的循环性能吗?下面的代码会比上面的代码好得多吗?

for (var i = 0; i < data.d.length; i++) {
   console.log(i)
}

我在网上看过一个在线循环压力测试,这表明减少的时间是最好的。 这是真的吗? http://jsperf.com/fastest-array-loops-in-javascript/32 请给我一个小提琴来压力测试代码。谢谢。建议被广泛接受。

1 个答案:

答案 0 :(得分:1)

在这两种情况下,运行时都是由console.log控制的大小,它执行潜在的阻塞IO(日志函数通常不便宜,特别是当它们产生可见的控制台/ UI输出时)。

假设console.log是无操作,第一个代码应该有一点点优势,因为每次迭代都不会重新评估d.length(这是未优化的情况下的两个字典查找)。不过,即使对于第二种情况,一个非常智能的JS运行时也可以避免这种情况。

最佳建议是,在分析代码的哪些部分是实际瓶颈后,优化最后 。 FF和Chrome内置了用于此目的的分析工具。

对于完美的JS循环迭代,请查看this related SO question。在每次迭代中做一个额外的增量不应该显着影响事情。