java - 为什么降序循环比升序循环快?

标签 java performance loops

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

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

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

最佳答案

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

但它是:

  • 一个过早的优化,不要仅仅因为这个原因就把第一行改成第二行! Donald Knuth 曾经说过,我完全同意他的观点

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

  • 不可移植优化 - 在某些特定情况下,它仅在某些特定处理器上运行得更快!而且很有可能它不仅会在其他架构上工作,而且会更慢。

你被警告了。

关于java - 为什么降序循环比升序循环快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913376/

相关文章:

Java Swing Cust ListCellRenderer

java - Junit 中的远程 PhantomJS 驱动程序

mysql - 使用多线程缓慢的mysql数据库恢复(delphi)

php - while 循环不会停止遍历数组

python - 更优雅地改变数组的数组

java - MySQL Java 存储过程给出错误 "Parameter index of 1 is out of range"

java - AlwaysPretouch 是否会导致触摸 -Xms 或 -Xmx 内的页面?

iOS - 在大型 NSArray 中搜索很慢

Excel VBA 宏在运行一夜后没有响应

java - java 中的平台相关错误(在 eclipse windows 中运行,但在 linux 中出错)