当它打破一个循环时,是一个简单的`if`比`else`更快?

时间:2017-10-02 17:36:11

标签: javascript performance loops if-statement

这可能是无法估量的,但我仍然会问。出于好奇。

在此代码中:

for (var i = 0; i < 10; i++) {
  if (i > 5) {
    break;
  }
  
  console.log("Do some stuff:", i);
}

我运行一个循环6次迭代并在7日打破它。

在此代码中:

for (var i = 0; i < 10; i++) {
  if (i > 5) {
    break;
  } else {
    console.log("Do some stuff:", i);
  }
}

除了在循环被破坏之前运行的代码在else内到if打破它时,我做的几乎一样。

显然,结果是一样的。但是,这两段代码是否在较低级别处理不同?其中一个甚至更快? 看起来除了外观有什么不同吗?

1 个答案:

答案 0 :(得分:0)

语法没有性能特征。有人可能会建议控制语法行为的规范中的算法具有隐含的性能特征,但这也不一定正确。

特别是在现代优化编译器的情况下,你的代码完全被重写了,所以即使在看起来像的某些情况下,一件事实际上应该比另一件更快或更慢,它可能不会实际上结果是。

与所有性能问题一样,特别是在微观优化的情况下,基准测试是做出决定的方式,即使这样,结果也应该用尽一切,因为现实世界的代码可能无法反映您在基准测试中观察到的结果,部分原因是由于上面提到的代码重写,或者也可能是因为基准测试本身存在缺陷。