首页 > 其他分享 >Spring 工具:StopWatch 计时器

Spring 工具:StopWatch 计时器

时间:2024-01-16 11:24:36浏览次数:28  
标签:Spring void watch 耗时 计时器 ms StopWatch 执行

工具类:org.springframework.util.StopWatch

作用:记录方法执行耗时,统计每个方法的耗时占比

所在模块:spring-core

方法 描述
void start(String taskName)
开始一个新的监测任务,可设置任务名称。记录当前时间和任务名称
void stop()
结束当前监测任务。记录任务执行时间,更新总执行时间和任务数量
String getLastTaskName()
获取最后一次执行的监测任务的任务名称
long getLastTaskTimeMillis()
获取最后一次执行的监测任务的执行时间,单位毫秒
long getTotalTimeMillis()
获取所有监测任务的总执行时间,单位毫秒
String prettyPrint()
以字符串形式输出所有监测任务的执行时间和详细信息

demo代码:

import org.springframework.util.StopWatch;

import java.util.concurrent.TimeUnit;

public class StopWatchDemo {

    private final static StopWatch watch = new StopWatch("task");

    public static void test1() throws InterruptedException {
        watch.start("test1");
        TimeUnit.SECONDS.sleep(1);
        watch.stop();
        System.out.println(watch.getLastTaskName() + " 执行耗时:" + watch.getLastTaskTimeMillis() + " ms");
    }

    public static void test2() throws InterruptedException {
        watch.start("test2");
        TimeUnit.SECONDS.sleep(1);
        watch.stop();
        System.out.println(watch.getLastTaskName() + " 执行耗时:" + watch.getLastTaskTimeMillis() + " ms");
    }

    public static void test3() throws InterruptedException {
        watch.start("test3");
        TimeUnit.SECONDS.sleep(2);
        watch.stop();
        System.out.println(watch.getLastTaskName() + " 执行耗时:" + watch.getLastTaskTimeMillis() + " ms");
    }

    public static void main(String[] args) throws InterruptedException {
        test1();
        test2();
        test3();
        System.out.println("执行总耗时:" + watch.getTotalTimeMillis() + " ms");
        TimeUnit.SECONDS.sleep(1);
        System.out.println(watch.prettyPrint());
    }

}

console 打印:

test1 执行耗时:1008 ms
test2 执行耗时:1008 ms
test3 执行耗时:2015 ms
执行总耗时:4031 ms
StopWatch 'task': running time = 4031531600 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
1008106800  025%  test1
1008242600  025%  test2
2015182200  050%  test3

  

ref:https://blog.csdn.net/JokerLJG/article/details/129010224

标签:Spring,void,watch,耗时,计时器,ms,StopWatch,执行
From: https://www.cnblogs.com/nihaorz/p/17967233

相关文章

  • 聊聊如何实现动态加载spring拦截器
    前言之前写过一篇文章聊聊如何实现热插拔AOP,今天我们继续整一个类似的话题,聊聊如何实现spring拦截器的动态加载实现核心思路groovy热加载java+事件监听变更拦截器实现步骤1、在项目的pom引入groovyGAV<dependency><groupId>org.codehaus.groovy</groupI......
  • SpringBoot自定义注解实现操作日志记录
    1、增加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>${spring-version}</version>......
  • Spring整合junit 5
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache......
  • 为什么很多公司 SpringBoot 项目禁止使用 Tomcat
    为什么很多公司SpringBoot项目禁止使用Tomcat学习改变命运,技术铸就辉煌。大家好,我是銘,全栈开发程序员。前言在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用......
  • spring Cloud 有哪些组件?
    Eureka:服务注册与发现,每个服务都向eureka提供自己的ip地址,端口号,协议,通信协议,eureka将各个服务维护到一个服务清单中(双层map,第一层key为服务名,第二层key为实例名),同时对服务维持心跳,剔除不可用的服务。发现:eurkeka注册的服务之间不用指定服务的地址,而是通过服务名向注册中心咨询,......
  • 时光机启动:Spring中如何巧妙实现定时任务?
    嗨,亲爱的小伙伴们!小米在这里又来和大家分享一些技术干货啦!今天我们要探讨的话题是关于Spring框架中如何实现定时任务。对于我们这些热爱技术的小伙伴来说,定时任务可是一个非常有趣而且实用的话题哦!引子首先,让我们简单了解一下什么是定时任务。在软件开发中,定时任务就是按照一定的时......
  • springboot拦截器@resource注解注入为null解决方案 拦截适配配置
    springboot拦截器@resource注解注入为null解决方案 拦截适配配置为什么@resource注入为nullinteceptor在springcontext之前加载,注入必然是null解决方案加入注解@Bean,注意需要使用@Configuration,而不是@Component解决在Spring添加拦截器之前先自己创建一下这个SpringBean,这样......
  • Spring AOP 中@Pointcut的用法(多个Pointcut)
    SpringAOP中@Pointcut的用法(多个Pointcut)/**swagger切面,分开来写**/@Aspect@ComponentpublicclassApiOperationLogAspect{privateLoggerlogger=LoggerFactory.getLogger(this.getClass());@Pointcut("@annotation(io.swagger.annotations.ApiOperation......
  • Spring Boot 使用 拦截器 实现 token 验证
    SpringBoot使用拦截器实现token验证整体思路:1.写一个工具类封装生成、校验和解析token的方法;2.在注册和登录时生成token,生成的token存入redis,下次登录去redis获取,如果存在则直接返回通过3.在拦截器中校验和解析token,拿到token中有用的信息存入privatestati......
  • springboot项目配置多数据源
    springboot项目配置多数据源//关键:mybatis文件的目录需要区分开来sqlSessionFactoryBean.setMapperLocations(newPathMatchingResourcePatternResolver().getResources("classpath:mybatis.myProjectOne/*.xml"));#从数据库配置,数据库的配置以spring.datasource.myPr......