java中for循环性能的优化(一)
for 循环性能测试(多层for循环的嵌套顺序)
public static void main(String[] args) {
int v1 = 100;
int v2 = 10000;
int v3 = 1000000;
long startTime1 = System.currentTimeMillis();
for (int i = 0; i < v1; i++) {
for (int j = 0; j <v2; j++) {
for (int k = 0;k< v3; k++) {
}
}
}
long endTime1 = System.currentTimeMillis();
System.out.println("内层循环次数>外层循环次数,执行时间:"+(endTime1-startTime1));
//内层循环次数>外层循环次数,执行时间:10
long startTime2 = System.currentTimeMillis();
for (int i = 0; i < v3; i++) {
for (int j = 0; j <v2; j++) {
for (int k = 0; k < v1; k++) {
}
}
}
long endTime2 = System.currentTimeMillis();
System.out.println("内层循环次数<外层循环次数,执行时间:"+(endTime2-startTime2));
//内层循环次数<外层循环次数,执行时间:3382
}
}
由于CPU在内外之间的切换会有一定的开销,因此如果可能的话, 应该尽可能较少内外层循环切换的次数.
只需使最外层循环的次数最少,内层循环次数多即可. (若观点有误请大神们多多指教)
public class test2 {public static void main(String[] args) {
int v1 = 100;
int v2 = 10000;
int v3 = 1000000;
long startTime1 = System.currentTimeMillis();
for (int i = 0; i < v1; i++) {
for (int j = 0; j <v2; j++) {
for (int k = 0;k< v3; k++) {
}
}
}
long endTime1 = System.currentTimeMillis();
System.out.println("内层循环次数>外层循环次数,执行时间:"+(endTime1-startTime1));
//内层循环次数>外层循环次数,执行时间:10
long startTime2 = System.currentTimeMillis();
for (int i = 0; i < v3; i++) {
for (int j = 0; j <v2; j++) {
for (int k = 0; k < v1; k++) {
}
}
}
long endTime2 = System.currentTimeMillis();
System.out.println("内层循环次数<外层循环次数,执行时间:"+(endTime2-startTime2));
//内层循环次数<外层循环次数,执行时间:3382
}
}
