Java for loop vs. while loop.性能差异?

2022-09-01 09:08:41

假设我有以下代码,有三个for循环来做一些事情。如果我将最外层的 for 循环更改为 while 循环,它会运行得很快吗?谢谢~~

int length = 200;
int test = 0;
int[] input = new int[10];

for(int i = 1; i <= length; i++) {
    for (int j = 0; j <=length - i; j++) {
        for (int k = 0; k < length - 1; k++) {
            test = test + input[j + k];
        }
    }
}

答案 1

不,更改循环类型无关紧要。

唯一可以使其更快的方法是减少循环嵌套,并循环更少的值。

循环和循环之间的唯一区别是用于定义它们的语法。完全没有性能差异。forwhile

int i = 0;
while (i < 20){
    // do stuff
    i++;
}

与以下相同:

for (int i = 0; i < 20; i++){
    // do Stuff
}

(实际上,for-loop 稍微好一点,因为在循环之后,它将超出范围,而在循环情况下会一直存在。iiwhile

for 循环只是一种语法上更漂亮的循环方式。


答案 2

这种微优化是毫无意义的。

  • 一个 while-loop不会更快。
  • 循环结构不是您的瓶颈。
  • 首先优化您的算法。
  • 更好的是,不要先优化。只有在您发现算法中确实存在不依赖于 I/O 的瓶颈后,才进行优化。