[英]Correct usage of Java System.currentTimeMillis() method?
[英]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.