我正在尝试计算数组中某些操作所花费的时间,并且遇到了一些奇怪的问题。
import java.util.Arrays;
import java.util.Random;
public class ArrayOperation {
public static void main(String args[]) {
int[] sizes = new int[] { 1, 100, 100, 10000};
for( int i = 0; i < sizes.length; i++) {
int[] arr = ArrayOperation.create(sizes[i]);
long startRead = System.nanoTime();
ArrayOperation.read(arr);
long estimatedRead = System.nanoTime() - startRead;
System.out.println(estimatedRead);
}
}
public static int[] create(int size) {
Random rand = new Random();
int[] arr = new int[size];
for (int i=0; i<size; i++) {
int rnum = rand.nextInt(100) + 1;
arr[i] = rnum;
}
return arr;
}
public static int read(int[] arr) {
int middle = arr[arr.length/2];
return middle;
}
}
这是我得到的输出。
3304 635 580 2551
您可以看到数组大小为1的时间比数组大小为100的时间更长。我尝试更改这些数组大小的位置,但是,第一个被调用的数组返回异常高的数字。对于为什么会发生这种情况的任何见解都会很棒。