为什么递减循环比递增循环运行得更快?

我正在通过递增/递减运算符我遇到了如果我以递减forms运行循环,在这种情况下,它将以增量forms运行得比同一循环更快。 我期待两者都会花费相同的时间,因为将遵循相同数量的步骤。 我在网上搜索但是找不到令人信服的答案。 是否因为与递增运算符相比减量运算符花费的时间更少?

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

这是因为在字节码中,与0比较的操作与使用非零数字进行比较的操作不同。 实际上, i < 10001需要首先在堆栈上加载数字然后执行比较,而i > 0作为一个操作执行。 当然,由于JVM优化,在大多数情况下不存在速度差异。 但是我们可以尝试通过使用-Xint选项运行代码使其可见(仅限解释模式执行)。

Piyush Bhardwaj

我测试了在线编译器中的两个循环,但我的增量循环执行得更快,然后减少循环。

程序执行取决于许多因素。 有时我们在同一台机器上运行相同的程序很多次,我们会得到不同的执行时间。 所以这取决于很多因素。

查看结果

 for(int i = 1; i < 100001; i++) { } 

增量循环 - http://ideone.com/irdY0e

 for(int i = 100000; i > 0; i--) { } 

递减循环 - http://ideone.com/yDO9Jf

Evgeniy Dorofeev爵士给出了一个很好的解释,专家只能给出。

最后,您需要考虑CPU的性能。 在考虑确定Java应用程序的整体性能的基准测试时,请记住字节码执行,本机代码执行和图形各自都起作用。 它们的影响取决于具体应用的性质。