如何计算我的程序的运行时间?

Mah*_*ine 113 java performance

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

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

我怎样才能做到这一点?

sna*_*ile 228

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

long startTime = System.nanoTime();
.....your program....
long endTime   = System.nanoTime();
long totalTime = endTime - startTime;
System.out.println(totalTime);
Run Code Online (Sandbox Code Playgroud)

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

  • long totalTime = (endTime - startTime)/1000; System.out.println(totalTime); 如果使用 segs (2认同)
  • System.nanoTime()更准确.看看krtek的帖子.@feelgoodandprogramming (2认同)
  • @ anon58192932,谢谢.我已经更新了答案,以避免误导人们到达它. (2认同)

krt*_*tek 42

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

final long startTime = System.nanoTime();
Run Code Online (Sandbox Code Playgroud)

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

final long duration = System.nanoTime() - startTime;
Run Code Online (Sandbox Code Playgroud)

duration现在包含程序运行的时间(以纳秒为单位).例如,您可以像这样打印此值:

System.out.println(duration);
Run Code Online (Sandbox Code Playgroud)

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

  • `long seconds = TimeUnit.NANOSECONDS.toSeconds(after - before);` (9认同)

Yan*_*hon 19

使用系统.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");
Run Code Online (Sandbox Code Playgroud)

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