当前位置: 首页 > article >正文

【SpringBoot】StopWatch工具类的使用

介绍

StopWatch类是Spring Framework中的一个实用工具类,位于org.springframework.util包中。它的主要作用是用于简单、方便地测量代码执行时间,通常用于性能监控和调试。

  • 启动和停止计时:可以启动和停止多个任务的计时。
  • 任务命名:可以为每个计时任务指定一个名称,以便于区分和记录。
  • 统计信息:可以获取每个任务的执行时间、总执行时间以及平均执行时间等统计信息。
  • 日志输出:可以将计时结果格式化为字符串,方便输出到日志或控制台。

示例代码

import org.springframework.util.StopWatch;

public class StopWatchExample {

    public static void main(String[] args) throws InterruptedException {
        StopWatch stopWatch = new StopWatch("MyStopWatch");

        // 开始第一个任务
        stopWatch.start("Task 1");
        // 模拟任务执行
        Thread.sleep(500);
        // 停止第一个任务
        stopWatch.stop();

        // 开始第二个任务
        stopWatch.start("Task 2");
        // 模拟任务执行
        Thread.sleep(300);
        // 停止第二个任务
        stopWatch.stop();

        // 开始第三个任务
        stopWatch.start("Task 3");
        // 模拟任务执行
        Thread.sleep(200);
        // 停止第三个任务
        stopWatch.stop();

        // 打印任务统计信息
        System.out.println(stopWatch.prettyPrint());
        System.out.println("Total time in milliseconds: " + stopWatch.getTotalTimeMillis());
        System.out.println("Total time in seconds: " + stopWatch.getTotalTimeSeconds());
        System.out.println("Short summary: " + stopWatch.shortSummary());
    }
}

输出:

StopWatch 'MyStopWatch': running time = 1009134335 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
504238209  050%  Task 1
300421584  030%  Task 2
204474542  020%  Task 3

Total time in milliseconds: 1009
Total time in seconds: 1.009134335
Short summary: StopWatch 'MyStopWatch': running time = 1009134335 ns

使用场景

  • 性能监控:在开发和测试阶段,使用StopWatch测量关键代码段的执行时间,以便优化性能。
  • 调试:在排查性能问题时,使用StopWatch定位耗时较长的代码段。
  • 日志记录:在生产环境中,记录任务的执行时间,以便后续分析和优化。

http://www.kler.cn/a/427442.html

相关文章:

  • 【MySQL】视图详解
  • labview使用modbus library实现modbus通信
  • flask+pyecharts实现可登录可视化大屏
  • RT Thread Studio新建STM32F407IG工程文件编译提示错误
  • MYSQL PARTITIONING分区操作和性能测试
  • 志愿服务管理系统设计与实现
  • 网络安全基本原则
  • 原型模式(Prototype Pattern)——对象克隆、深克隆与浅克隆及适用场景
  • 排序算法入门:分类与基本概念详解
  • 单链表---回文结构
  • 静态路由与交换机配置实验
  • springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
  • Java实现三种排序方式
  • 微信小程序px和rpx单位互转方法
  • 【JavaEE】多线程(5)
  • 爆肝Android JNI - 延展Android蓝牙JNI学习
  • HTTPS的工作过程
  • MySQL Group Replication
  • 【GESP】C++一级练习 luogu-P1035, [NOIP2002 普及组] 级数求和
  • 【opencv入门教程】9.视频加载