使用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对象的名称

相关推荐
进阶的猿猴几秒前
java中实现markdown转为pdf
java·pdf·markdown
sunnyday04261 分钟前
Nginx与Spring Cloud Gateway QPS统计全攻略
java·spring boot·后端·nginx
海南java第二人4 分钟前
Spring Boot全局异常处理终极指南:打造优雅的API错误响应体系
java·spring boot·后端
南朝雨6 分钟前
Spring Boot Admin日志监控坑点:远程配置的logging.file.name为何生效又失效?
java·spring boot·spring cloud·微服务·logback
l1t7 分钟前
利用DeepSeek辅助翻译clickhouse SQL为DuckDB 格式求解Advent of Code 2025第10题 电子工厂 第二部分
数据库·人工智能·sql·clickhouse·duckdb
sanggou7 分钟前
Spring Cloud Gateway 转发 SSE 的那些坑
java
DarkAthena11 分钟前
【GaussDB】分析函数性能优化案例-row_number改写
数据库·sql·oracle·性能优化·gaussdb
techdashen12 分钟前
借助gh-ost,对MySQL大表进行表结构的变更
数据库·mysql
それども13 分钟前
理解 Java21 虚拟线程
java
Lethehong14 分钟前
破局Oracle迁移困局:破局Oracle迁移困局:直面兼容性与成本的隐性痛点
数据库·oracle