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

时间:2013-05-10 06:02:26

标签: java operators

我正在经历递增/递减运算符,而我遇到了如果我以递减形式运行循环,那么它将以递增形式运行得比同一循环更快。< / strong>我期待两者都会花费相同的时间,因为将遵循相同数量的步骤。我在网上搜索但是找不到令人信服的答案。是否因为与增量运算符相比减量运算符花费的时间更少?

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

2 个答案:

答案 0 :(得分:43)

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

答案 1 :(得分:4)

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应用程序的整体性能的基准测试时,请记住字节码执行,本机代码执行和图形各自都起作用。它们的影响取决于具体应用的性质。