众多功能中的第一个功能花了很长时间(Java)

时间:2018-11-13 00:20:25

标签: java sorting search

所以我有一个作业,要求我测量不同的搜索和排序算法需要多少时间。这些方法已完全正确地实施。现在,我知道由于Java中的JIT编译器,递归会执行更多的调用,而迭代会执行更多的循环。

但是时间差异似乎是由其他原因引起的。首先,下面是代码:

    t0 = System.nanoTime();
    Sort.recursiveBinaryInsertionSort(arr);
    t1 = System.nanoTime();
    sortTimes[0] = t1 - t0;
    System.out.println("Recursive binary insertion sort total: " + ArrayUtils.getComparisons() + " comparisons for " //$NON-NLS-1$ //$NON-NLS-2$
            + arr.length + " numbers."); //$NON-NLS-1$
    t0 = System.nanoTime();
    Sort.iterativeBinaryInsertionSort(arr2);
    t1 = System.nanoTime();
    sortTimes[1] = t1 - t0;

对于从0到100的10个随机数,FIRST函数所花费的时间比秒长400毫秒,而且我已经确认这不是因为函数。我尝试交换这些函数,将它们都切换为对同一数组排序的SAME函数(应该花完全相同的时间,对吗?),并且第一个函数总是比任何其他函数花费更长的时间。为什么是这样?我在做错什么吗?

0 个答案:

没有答案