反向循环真的更快吗? [英] Are loops really faster in reverse?

查看:21
本文介绍了反向循环真的更快吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经听过很多次了.向后计数时 JavaScript 循环真的更快吗?如果是这样,为什么?我已经看到一些测试套件示例表明反向循环更快,但我找不到任何解释为什么!

I've heard this quite a few times. Are JavaScript loops really faster when counting backward? If so, why? I've seen a few test suite examples showing that reversed loops are quicker, but I can't find any explanation as to why!

我假设这是因为循环不再需要在每次检查属性是否完成时都评估它,它只检查最终的数值.

I'm assuming it's because the loop no longer has to evaluate a property each time it checks to see if it's finished and it just checks against the final numeric value.

for (var i = count - 1; i >= 0; i--)
{
  // count is only evaluated once and then the comparison is always on 0.
}

推荐答案

并不是 i--i++ 快.实际上,它们的速度都一样快.

It's not that i-- is faster than i++. Actually, they're both equally fast.

在升序循环中需要时间的是为每个 i 评估数组的大小.在这个循环中:

What takes time in ascending loops is evaluating, for each i, the size of your array. In this loop:

for(var i = array.length; i--;)

当你声明 i 时,你只计算一次 .length,而对于这个循环

You evaluate .length only once, when you declare i, whereas for this loop

for(var i = 1; i <= array.length; i++)

每次增加 i 时都会评估 .length,当您检查 i <= array.length 时.

you evaluate .length each time you increment i, when you check if i <= array.length.

在大多数情况下,您甚至不必担心这种优化.

这篇关于反向循环真的更快吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆