进入批处理 Java 应用程序(运行到控制台的应用程序)中,我必须记录执行特定任务所需的时间(某些操作作为查询执行)。
所以我想要做到这一点,我可以检索任务开始前的日期和时间,并在任务完成后再次获取,然后从第二个值中减去第一个值并使用 log4j 将结果打印到日志文件中。
但是,如果这是一个正确的好解决方案,我如何正确取此值(日期和时间)?
存在一些更聪明的方法吗?
下面是一个以毫秒为单位的结果示例:
public Connection getConnection(String inConnectionType) throws TSPException {
long start = System.nanoTime();
Connection conn = null;
try {
DataSource dataSource = getDataSource(inConnectionType);
conn = dataSource.getConnection();
} catch (SQLException e) {
log.error(e);
throw new TSPException(e);
}
long end = System.nanoTime();
double duration = (end - start) / 1000000.0;
log.debug("Duration getting external db connection=" + duration);
return conn;
}
正如@John建议的那样,你可以看看如何在 Java 中测量经过的时间?
如果您想测量一些任务,也许使用 System.nanoTime()
,存储值并执行计算对您来说就足够了。
如果你需要更复杂的东西,我建议你看看java.time(Java Platform SE 8)或Joda-Time。两者都提供了持续时间和周期的概念来测量时间量。