0

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

2 回答 2

3

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

似乎该算法完成其循环所需的时间少于 a 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);
}
于 2012-09-24T16:12:16.047 回答
0

如果您的返回值小于 1。使用返回类型doubledouble在您的示例中,您应该使用long.

于 2012-09-24T16:14:35.543 回答