繁体   English   中英

在使用System.currentTimeMillis()的方法中返回long

[英]Returning a long in a method that uses System.currentTimeMillis()

我正在写一种方法来计算算法的运行时间。 该算法运行指定次数的试验,然后使用System.currentTimeMillis()计算运行时间。 但是,每当我调用该方法时,该值始终最终为零。 任何解决此问题的方向都值得赞赏。

public long runTime(algorithm alg, int[] array, int trials)
{

    long initialTime = System.currentTimeMillis();

    for(int i = 0; i < trials; i++)
    {
        alg.runAlgorithm(array); 
    }

    return ((System.currentTimeMillis() - initialTime) / (long) trials);
}

((System.currentTimeMillis() - initialTime) / (long) trials);

似乎算法需要不到1 ms来完成其循环,因此您需要将其平均分配到更小的单位。使用nanoTime()可以完成您的工作...

例如:

public long runTime(algorithm alg, int[] array, int trials)
{

    long initialTime = System.nanoTime();

    for(int i = 0; i < trials; i++)
    {
        alg.runAlgorithm(array); 
    }

    return ((System.nanoTime() - initialTime) / (long) trials);
}

如果您的返回值小于一。 使用返回类型double 在您的示例中,应使用long double实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM