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

我写了一个程序,现在我要计算程序从开始到结束的总运行时间。

我怎么能这么做?

439309 次浏览

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

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

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

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

final long startTime = System.nanoTime();

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

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

duration现在包含程序运行的时间(以纳秒为单位):

System.out.println(duration);

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

如果需要更精确的读数,可以使用 System.CurrentTimeMillis()或 System.纳米时间()。通常,如果需要向用户输出值,毫秒就足够精确了。此外,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");

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

这方面的一般做法是:

  1. 获取基准测试开始的时间,比如 main()开始的时间。
  2. 运行代码。
  3. 获取基准测试结束时的时间,比如 main()结束时的时间。
  4. 从结束时间中减去开始时间并转换成适当的单位。

提示: 看看 System.nanoTime()System.currentTimeMillis()

您需要获取应用程序启动的时间,并将其与应用程序结束的时间进行比较。

应用程序启动:

Calendar calendar = Calendar.getInstance();


// Get start time (this needs to be a global variable).
Date startDate = calendar.getTime();

当申请结束时

Calendar calendar = Calendar.getInstance();


// Get start time (this needs to be a global variable).
Date endDate = calendar.getTime();

要获得差异(以毫秒为单位) ,请这样做:

long sumDate = endDate.getTime() - startDate.getTime();

除了众所周知的(已经提到的) System.currentTimeMillis()System.nanoTime()之外,还有一个简洁的名为 完美4J的库,当然,这也可能是有用的,这取决于您的用途。