例如:

var longArray = [1, 2, 3, 4]
var shortArray = [2, 3]

哪一个更快?

长循环优先:
for (var i = 0; i < longArray.length; i++) {
  for (var j = 0; j < shortArray.length; j++) {
    if (longArray[i] === shortArray[j]) {
      // do something
    }
  }
}

还是先短循环:
for (var i = 0; i < shortArray.length; i++) {
  for (var j = 0; j < longArray.length; j++) {
    if (longArray[i] === shortArray[j]) {
      // do something
    }
  }
}

还是我没有考虑的任何优势?还是根本没有关系?

最佳答案

短循环优先通常更快,这仅是因为它会花更多的时间按与元素在内存中的排列顺序相同的顺序访问元素。您需要longArray来拥有更多元素,至少要几千个。这是一个测试案例,以证明两者之间的区别:https://jsperf.com/loop-order-sl

对于您发布的数组,其longArray相对较小,其性能差异可忽略不计。较短的数组可能会像@Ajaypayne所观察到的那样快一点,反之亦然,具体取决于环境。

09-18 09:59