请让我明白为什么会这样。当我尝试确定方法的运行时间时,第一个总是慢于第二个。即使我更改方法及其调用的顺序,第一个方法也总是会变慢。
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
我先调用哪个都不重要。实际上,它将运行得慢得多。即使我使方法相同。