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 未満の場合。戻り型を使用しdoubleます。あなたの例では、doubleのインスタンスを使用する必要がありますlong

于 2012-09-24T16:14:35.543 に答える