为什么以递减顺序循环比增加顺序更快?

时间:2013-07-28 22:04:03

标签: java performance loops

我从一些博客中看到了这个问题。给出了以下两个循环,问题是哪一个更快。

for(int i = 100000; i > 0; i--) {}
for(int i = 1; i < 100001; i++) {}

为什么第一个比第二个快?

1 个答案:

答案 0 :(得分:6)

在某些编译器生成的代码中的某些处理器上,第一个可能更快,因为该值与零进行比较。正如@DeadMG指出的那样,它适用于1985年之前的x86处理器。

但它是:

  • 过早优化,由于这个原因,不要将第一行改为第二行! Donald Knuth曾经说过,我完全赞同他
  

我们应该忘记效率低,大约97%的时间说:   过早优化是万恶之源。

  • 非便携式优化 - 在某些特定情况下,它仅在某些特定处理器上运行得更快!并且很有可能它不仅可以在其他架构上工作,而且速度更慢。

你被警告了。