I try to time my java program using System.currentTimeMillis();, but I find a really wired phenomenon that the array with 100000 elements takes a longer time than the array with 2000000 elements. I got the following results. I use the Intellij IDEA.
timing : 2ms
timing : 2ms
timing : 0ms
timing : 1ms
timing : 2ms
100000 - 1.400000
timing : 3ms
timing : 0ms
timing : 0ms
timing : 0ms
timing : 0ms
200000 - 0.600000
timing : 0ms
timing : 0ms
timing : 1ms
timing : 0ms
timing : 0ms
500000 - 0.200000
timing : 1ms
timing : 0ms
timing : 0ms
timing : 1ms
timing : 0ms
1000000 - 0.400000
timing : 1ms
timing : 1ms
timing : 0ms
timing : 1ms
timing : 1ms
2000000 - 0.800000
Here is my code:
public static void main(String[] args) {
    Random generator = new Random();
    final int ITERATIONS = 5;
    int[] N = new int[] {100000, 200000, 500000, 1000000, 2000000};
    for (int n : N) {
        int[] array = new int[n];
        for (int i = 0; i < array.length; i++) {
            array[i] = generator.nextInt();
        }
        int q = generator.nextInt();
        float timing = 0;
        for (int it = 0; it < ITERATIONS; it++) {
            long start = System.currentTimeMillis();
            linearSearch(array, n, q);
            long end = System.currentTimeMillis();
            timing += end - start;
        }
        timing /= (long)(ITERATIONS);
        System.out.format("%d - %f\n", array.length, timing);
    }
}
public static int linearSearch(int[] a, int n, int q) {
    long start = System.currentTimeMillis();
    int index = 0;
    int position = -1;
    while (index < n && a[index] != q) {
        index += 1;
    }
    if (index == n) {
    } else {
        position = index;
    }
    long end = System.currentTimeMillis();
    System.out.println("timing : " + (end - start) + "ms");
    return position;
}
