在做开发的时需要统计每个方法的执行消耗时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,然而使用使用Spring的StopWatch类就可以优雅打印方法执行耗时间
简单的Demo
- import org.springframework.util.StopWatch;
-
- public class SpringStopWatchExample {
-
- public static void main (String[] args) throws InterruptedException {
- StopWatch sw = new StopWatch();
- sw.start();
- //long task simulation
- Thread.sleep(1000);
- sw.stop();
- System.out.println(sw.getTotalTimeMillis());
- }
- }
打印同个方法多个代码块的执行消耗时间
- import org.springframework.util.StopWatch;
-
- public class SpringStopWatchExample2 {
-
- public static void main (String[] args) throws InterruptedException {
- StopWatch sw = new StopWatch();
- sw.start("A");
- Thread.sleep(1000);
- sw.stop();
- sw.start("B");
- Thread.sleep(200);
- sw.stop();
- sw.start("C");
- Thread.sleep(500);
- sw.stop();
- System.out.println(sw.prettyPrint());
- }
- }
输入结果
- StopWatch '': running time (millis) = 1031
- -----------------------------------------
- ms % Task name
- -----------------------------------------
- 00514 100% A
- 00302 0200% B
- 00215 0500% C
StopWatch
常用方法getTotalTimeSeconds()
获取总耗时秒,同时也有获取毫秒的方法prettyPrint()
优雅的格式打印结果,表格形式shortSummary()
返回简短的总耗时描述getTaskCount()
返回统计时间任务的数量getLastTaskInfo().getTaskName()
返回最后一个任务TaskInfo
对象的名称