Java循环性能



我做了两个关于java循环的测试,如下所示。第一次测试,int int w=q[i][j];总时间约为5ms。没有int w=q[i][j]的第二次测试;总时间约为40ms。我不明白删除一行代码,但要花更多的时间。为什么?

测试1:

int[][] p = new int[10000][10000];
int[][] q = new int[10000][10000];
long startTime = System.currentTimeMillis();
for(int i = 0; i<10000; i++){
for(int j = 0; j<10000; j++){
int k = p[i][j];
int w = q[i][j];
}
}
long endTime   = System.currentTimeMillis();
long TotalTime = endTime - startTime;
System.out.println(TotalTime); //It is about 5

测试2:

int[][] p = new int[10000][10000];
int[][] q = new int[10000][10000];
long startTime = System.currentTimeMillis();
for(int i = 0; i<10000; i++){
for(int j = 0; j<10000; j++){
int k = p[i][j];
//   int w = q[i][j];
}
}
long endTime   = System.currentTimeMillis();
long TotalTime = endTime - startTime;
System.out.println(TotalTime);  //it is about 40

两次测试的值都在5ms到9ms之间。我建议多次运行测试以获得准确的结果并消除异常值。在某些情况下,您的代码可能会运行得更慢,因为CPU可能已经决定运行其他任务,从而使代码停止几毫秒。这可能是Test2需要更长时间才能完成的原因。

最新更新