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

Rya*_*yan 1 java performance loops

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

for(int i = 100000; i > 0; i--) {}
for(int i = 1; i < 100001; i++) {}
Run Code Online (Sandbox Code Playgroud)

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

sas*_*hka 6

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

但它是:

  • 一个不成熟的优化,没有第一线更改为第二只因为这个原因!唐纳德克努特曾经说过,我完全赞同他

我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源.

  • 一个不可移植的优化-它的工作原理更快只在某些特定情况下,某些特定的处理器!而且很有可能它不仅可以在其他架构上工作,而且速度更慢.

你被警告了.