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

时间:2012-09-24 16:06:11

标签: java time casting long-integer

我正在编写一种计算算法运行时间的方法。该算法运行指定数量的试验,然后使用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);
}

2 个答案:

答案 0 :(得分:3)

((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);
}

答案 1 :(得分:0)

如果您的返回值小于1。使用返回类型double。在您的示例中,您应该使用double的{​​{1}}实例。