使用Spring的StopWatch类优雅打印方法执行耗时

在做开发的时需要统计每个方法的执行消耗时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,然而使用使用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对象的名称

相关推荐
程序员黎剑44 分钟前
Spring-Bean生命周期-构造器访问Autowired字段为null
java·后端·spring
古法安卓1 小时前
Android-重启流程源码解析
android·java·android studio
其实防守也摸鱼1 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
清水白石0081 小时前
Python 类型设计深度解析:TypedDict 能否替代 dataclass?从 JSON 数据边界到 API 设计的最佳实践
java·python·json
人生百态,人生如梦1 小时前
每日论文解读(9.1)——ReToolSQL:面向鲁棒Text-to-SQL的Agentic强化学习与工具增强两阶段训练框架
数据库·sql
DevOpenClub1 小时前
网页采集如何稳定输出结构化数据:JSON、链接与快照三阶段流水线
数据库·json·api
晊晌_h1 小时前
嵌入式从0到精通——线程
java·开发语言·jvm
一木 之林2 小时前
五、C++ 新特性、关键字与编译原理(进阶)(二)
java·开发语言·c++
洋不写bug2 小时前
绕过权限检查,访问修改私有属性,反射,枚举,lambda
java·枚举·lambda·反射
其实防守也摸鱼2 小时前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透