java - 计算java中完成一个函数的平均时间

标签 java arrays loops

我正在运行一个简单的排序 1000 次,并尝试根据用户定义的数组长度获取完成所需的平均时间(然后与另一个排序进行比较)。我的问题是,当我尝试获取时间时,它始终为 0。我已经有一段时间没有编码了,也没有看到我的错误。

import java.util.Scanner;

public class TimingExpBubble2 {
    public static long average(long[] arr){
        int sum = 0; 

        for (int i = 0; i < arr.length; i++) 
            sum += arr[i]; 

        return sum / arr.length; 
    }
    public static void main(String args[]) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter array length: ");
        int x = reader.nextInt();
        long[] time = new long[1000];
        for(int i = 0; i < 1000; i++)
        {
            int[] arr = new int[x];
            for(int j = 0; j < arr.length; j++) {
                arr[j] = (int) (Math.random() * 5000);
            }
            long start = System.currentTimeMillis();

            for (int l = 0; l < arr.length - 1; l++) {
                for (int j = 1; j < arr.length - i; j++) {
                    if (arr[j - 1] > arr[j]) {
                        int temp = arr[j - 1];
                        arr[j - 1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            reader.close();
            long end = System.currentTimeMillis();
            time[i] = (end - start);
        }
        System.out.println("Average time in Miliseconds: " + average(time));
    }

}
'''

最佳答案

您需要使用System.nanoTime()而不是System.currentTimeMillis()

关于java - 计算java中完成一个函数的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60534898/

相关文章:

C语言程序无法结束循环

java - 具有 const 参数的不可变对象(immutable对象)是否会被优化为仅由 Kotlin 编译器实例化一次

java - 如何正确配置属性文件?

java - 通知传输已完成超过 20 个字节 onCharactersitcChanged BLE

java - 在 HIVE 中运行 UDF 以进行自定义反序列化时出现 OWN_TASK_FAILURE。

JavaScript forEach : mutate elements

JAVA:多行输入并用空格分隔

php - 将变量值与 PHP 中的查询结果进行比较

c - 为什么我在比较线性搜索和二分搜索时每次都得到零?

loops - 根据主机组安装不同的 PHP 包