问题

可能重复:如何计算方法在Java中的执行时间?

我写了一个程序,现在我想从头到尾计算程序的总运行时间。

我怎样才能做到这一点?


#1 热门回答(204 赞)

使用System.nanoTime获取当前时间。

long startTime = System.nanoTime();
.....your program....
long endTime   = System.nanoTime();
long totalTime = endTime - startTime;
System.out.println(totalTime);

上面的代码以纳秒为单位打印程序的运行时间。


#2 热门回答(38 赞)

在main方法的开头,添加以下代码行:

final long startTime = System.nanoTime();

然后,在main方法的最后一行,你可以添加:

final long duration = System.nanoTime() - startTime;

durationnow包含程序运行的时间(以纳秒为单位)。例如,你可以像这样打印此值:

System.out.println(duration);

如果要以秒为单位显示持续时间,则必须将值除以1'000'000'000。或者,如果你想aDate对象:Date myTime = new Date(duration / 1000);你可以访问各种方法Date打印分钟数,小时数等。


#3 热门回答(16 赞)

如果你想要更精确的读取,请使用System.currentTimeMillis()或System.nanoTime()。通常,如果你需要将值输出给用户,则毫秒就足够精确。此外,System.nanoTime()可能会返回负值,因此,如果你使用该方法,则返回值可能不正确。

一般而广泛的用途是使用毫秒:

long start = System.currentTimeMillis();

... 


long end = System.currentTimeMillis();

NumberFormat formatter = new DecimalFormat("#0.00000");
System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");

请注意,纳秒通常用于计算非常短且精确的程序执行,例如单元测试和基准测试。因此,对于整个程序执行,毫秒是优选的。


原文链接