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