① System.currentTimeMillis()
开始 System.currentTimeMillis()
减去 结束 System.currentTimeMillis()
等于耗时。
② StopWatch
这是spring util 里面提供的 StopWatch
示例代码:
StopWatch stopWatch = new StopWatch();
stopWatch.start();
//doInsert();
//执行业务等
stopWatch.stop();
System.out.println(stopWatch.getTotalTimeMillis());
效果:
③ System.nanoTime()
看完上一种 StopWatch
的时候, 想着这spring 封装的统计耗时,自己是怎么实现的?
直接点StopWatch 的源码看一眼, 原理是用的 System.nanoTime()
:
System.nanoTime()
代码使用示例 :
long startTime = System.nanoTime();
doInsert();
//执行业务
long endTime = System.nanoTime();
System.out.println((endTime - startTime));
效果 :
④ new Date()
示例代码:
Date startDate = new Date();
// doInsert();
//执行业务等
Date endDate = new Date();
System.out.println((endDate.getTime() - startDate.getTime()));
效果:
总结
StopWatch 其实不仅仅是封了一下耗时统计 :
里面其实封装了蛮多其他关于时间统计的函数(感兴趣的可以单独去研究研究,特别是参考作者的封装思路 ):
-
void start(“任务名称”)
:开始一个任务名称的计时 -
void stop()
:停止当前任务的计时 -
boolean isRunning()
:是否正在计时某任务 -
long getTotalTimeMillis()
:所有任务的总体执行时间(毫秒单位) -
double getTotalTimeSeconds()
:所有任务的总时间(以秒为单位) -
long getLastTaskTimeMillis()
:上一个任务的耗时(毫秒单位) -
int getTaskCount()
:定时任务的数量 -
String prettyPrint()
:优美地打印所有任务的详细耗时情况 -
StopWatch.TaskInfo[] getTaskInfo()
:包含任务名称和任务耗时的实体类数组