java - 如何用Java测量执行时间

标签 java execution-time

我试图打印下面代码的执行时间,但它总是给我 0 毫秒。我在网上找到了这段代码,想要测量执行情况,所以我在底部添加了几行。

Java:


class MergeSort {
void merge(int nums[], int left, int m, int right) {
    int n1 = m - left + 1;
    int n2 = right - m;

    int Left_part_arra[] = new int[n1];
    int Right_part_arra[] = new int[n2];

    for (int i = 0; i < n1; ++i)
    Left_part_arra[i] = nums[left + i];
    for (int j = 0; j < n2; ++j)
    Right_part_arra[j] = nums[m + 1 + j];

    int i = 0,
    j = 0;

    int k = left;
    while (i < n1 && j < n2) {
        if (Left_part_arra[i] <= Right_part_arra[j]) {
            nums[k] = Left_part_arra[i];
            i++;
        } else {
            nums[k] = Right_part_arra[j];
            j++;
        }
        k++;
    }

    while (i < n1) {
        nums[k] = Left_part_arra[i];
        i++;
        k++;
    }

    while (j < n2) {
        nums[k] = Right_part_arra[j];
        j++;
        k++;
    }
}

// merge()
void sort(int nums[], int left, int right) {
    if (left < right) {
        // Find the middle point
        int m = (left + right) / 2;

        // Sort first halve
        sort(nums, left, m);
        // Sort second halve
        sort(nums, m + 1, right);

        // Merge the sorted halves
        merge(nums, left, m, right);
    }
}

// Method to test above
public static void main(String args[]) {
    MergeSort ob = new MergeSort();
    int nums[] = {
        7,
        -5,
        3,
        2,
        1,
        0,
        45
    };
    System.out.println("Original Array:");
    System.out.println(Arrays.toString(nums));
    ob.sort(nums, 0, nums.length - 1);
    System.out.println("Sorted Array:");
    System.out.println(Arrays.toString(nums));

    long start = System.currentTimeMillis();
    long end = System.currentTimeMillis();
    System.out.println("Merge took: " + (end - start) + " milliseconds");
}
}

最佳答案

为了使其正常工作,这一行:

long start = System.currentTimeMillis(); 

应该在此行之前:

ob.sort(nums, 0, nums.length-1);

另外,请记住这是测量时间而不是时间复杂度

关于java - 如何用Java测量执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564137/

相关文章:

c - 在 C 中限制程序的执行时间(蒙特卡罗技术)

php - yii2 中超过 120 秒的最长执行时间

c# - 像 EntityFramework 6 中那样在 System.Data.Linq.DataContext 中记录执行时间

java - Android自定义view获取多个属性

java - @ControllerAdvice 方法似乎绕过了拦截器

mysql - 我怎样才能加快这个 MySQL 查询的速度,找到最接近给定纬度/经度的位置?

java - 在 Virtuoso 服务上使用 Jena 的 SPARQL 查询执行时间

java - 使用 java ProcessBuilder 从批处理文件运行 python 脚本不起作用

java - 您知道免费或开源网站拼写检查器吗?

java - 有效计算大 n 的 nCr(n,m) mod k