for loop vs for loop in reverse:performance

时间:2015-06-12 10:53:37

标签: javascript performance for-loop

根据What's the Fastest Way to Code a Loop in JavaScript?Why is to decrement the iterator toward 0 faster than incrementing, 基本的for循环比for循环慢,具有简化的测试条件, 即:



console.log("+++++++");
var until = 100000000;

function func1() {
  console.time("basic")
  var until2 = until;
  for (var i = 0; i < until2; i++) {}
  console.timeEnd("basic")
}

function func2() {
  console.time("reverse")
  var until2 = until;
  for (until2; until2--;) {}
  //while(until2--){}
  console.timeEnd("reverse")
}

func1();
func2();
&#13;
&#13;
&#13;

正如您可能看到的那样,第一个功能与预期相反,比第二个功能更快。自从这篇oracle文章发布以来有什么变化,或者我做错了什么?

1 个答案:

答案 0 :(得分:4)

是的,自文章发布以来发生了一些变化。 Firefox已经从版本3升级到版本38。大多数情况下,当发布新版本的浏览器时,一些事情的表现已经发生了变化。

如果您在不同系统的不同浏览器的不同版本中尝试该代码,您会发现性能会有很大差异。针对不同的Javascript代码优化了不同的浏览器。

由于性能不同,并且您不能依赖任何测量很长时间,如果您需要优化Javascript,基本上有两个原则可以遵循:

  • 为每项任务使用最简单,最常用的代码;这是浏览器供应商将尝试优化的代码。

  • 不要在特定浏览器中寻找最佳性能,寻找任何浏览器中最差的性能。在不同的浏览器中测试代码,并选择一种在任何浏览器中都不会产生非常糟糕性能的方法。