为什么第一种方法比第二种方法慢得多?

时间:2018-11-13 02:51:44

标签: java performance

请让我明白为什么会这样。当我尝试确定方法的运行时间时,第一个总是慢于第二个。即使我更改方法及其调用的顺序,第一个方法也总是会变慢。

import java.util.Arrays;

public class FindTheUniqueNumber {

    public static double findUniq(double arr[]) {
        Arrays.sort(arr);
        if (arr[0] != arr[1])
            return arr[0];
        else
            return arr[arr.length - 1];
    }

    public static double findUniq3(double[] arr) {
        Arrays.sort(arr);
        return arr[0] == arr[1] ? arr[arr.length-1]:arr[0];
    }

    public static void main(String[] args) {
        final long endTime, startTime = System.nanoTime();
        findUniq(new double[]{ 1, 1, 1, 2, 1, 1 });
        endTime = System.nanoTime();
        System.out.println("Code took "+(endTime-startTime)+" nano seconds");

        final long endTime2, startTime2 = System.nanoTime();
        findUniq3(new double[]{ 1, 1, 1, 2, 1, 1 });
        endTime2 = System.nanoTime();
        System.out.println("Code took "+(endTime2-startTime2)+" nano seconds");
    }
}

结果就像

Code took 357969 nano seconds
Code took 5103 nano seconds

我先调用哪个都不重要。实际上,它将运行得慢得多。即使我使方法相同。

0 个答案:

没有答案