System.nanotime()在第一次调用中返回大量时间

时间:2018-09-07 22:39:43

标签: java arrays

我正在尝试计算数组中某些操作所花费的时间,并且遇到了一些奇怪的问题。

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的时间更长。我尝试更改这些数组大小的位置,但是,第一个被调用的数组返回异常高的数字。对于为什么会发生这种情况的任何见解都会很棒。

0 个答案:

没有答案