两个循环性能差异。交换内圈和外圈

时间:2014-12-28 13:05:44

标签: javascript performance nested-loops

我有两个循环(一个嵌套在另一个循环中),我想知道嵌套这些循环的方式是否有任何不同。代码1和代码2的结果相同(100,000x4 = 4x100,000 = 400,000),但jsPerf表示代码2比代码1快约50%。

我想请求您的建议,我不明白两者之间的区别。

非常感谢。

var tt = function () {
      // do some stuff
      // for example:
      return (3);
    };

测试代码1:

for (var i = 0; i < 100000; i++) {
  for (var j = 0; j < 4; j++) {
    tt();
  }
}

测试代码2:

for (var j = 0; j < 4; j++) {
  for (var i = 0; i < 100000; i++) {
    tt();
  }
}

2 个答案:

答案 0 :(得分:2)

区别在于循环初始化代码。第一个代码必须初始化内循环100,000次,而第二个代码只执行4次。

答案 1 :(得分:1)

分析代码,好像每个操作都有成本,你会发现这是有道理的。

在测试代码2中,你被困在嵌套循环上100,000次,但是转到外循环4次。 相反,在测试代码1中,您在两者之间交替。

第一个测试代码运行的操作多于秒数。