Spring计时器StopWatch

这篇具有很好参考价值的文章主要介绍了Spring计时器StopWatch。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


StopWatch介绍

StopWatch类是Spring框架中用于测量代码执行时间的工具类,它提供了一系列属性来记录监测信息。

本文基于spring-boot-starter-web:2.2.2RELEASE版本。

源码:

public class StopWatch {
    private final String id;
    private boolean keepTaskList = true;
    private final List<StopWatch.TaskInfo> taskList = new LinkedList<>();
    private long startTimeMillis;
    @Nullable
    private String currentTaskName;
    @Nullable
    private StopWatch.TaskInfo lastTaskInfo;
    private int taskCount;
    private long totalTimeMillis;

	......方法略
	public static final class TaskInfo {

		private final String taskName;
	
		private final long timeNanos;
	}
}

StopWatch属性详解

属性 描述
id 表示该StopWatch对象的唯一标识符,可以通过构造函数传入。
keepTaskList 表示是否保留所有记录的监测任务,,默认为true。
如果该值为true,则程序可以通过getTaskInfo()方法获取所有监测任务的详细信息,否则仅可以获取最后一次监测任务的详细信息。
taskList 用于记录所有的监测任务信息,只有keepTaskList属性值为true时才记录任务信息,该值在stop()方法调用时添加一条任务信息。
currentTaskName 表示当前正在执行的监测任务名称,该值在start()方法调用时设置。
lastTaskInfo 表示最后一次执行的监测任务的详细信息,包括任务名称、执行时间等,该值在stop()方法调用时设置。
taskCount 表示执行的监测任务数目,该值在stop()方法调用时值+1。
totalTimeMillis 表示该StopWatch对象记录的所有监测任务的总执行时间,单位为毫秒,该值在stop()方法调用时值+当前任务的执行时间。
TaskInfo.taskName 任务名称。
TaskInfo.timeNanos 任务执行时间。

StopWatch方法详解

方法 描述
void setKeepTaskList(boolean keepTaskList) 设置是否保留所有记录的监测任务,默认为true。
如果该值为true,则程序可以通过getTaskInfo()方法获取所有监测任务的详细信息。
void start() 开始一个新的监测任务,可设置任务名称。记录当前时间和任务名称。
void stop() 结束当前监测任务。记录任务执行时间,更新总执行时间和任务数量。
String getId() 获取唯一标识符。
String currentTaskName() 获取当前正在运行的监测任务名称。
TaskInfo getLastTaskInfo() 获取最后一次执行的监测任务的详细信息,包括任务名称、开始时间、结束时间和执行时间等。
String getLastTaskName() 获取最后一次执行的监测任务的任务名称
long getLastTaskTimeMillis() 获取最后一次执行的监测任务的执行时间,单位毫秒
long getLastTaskTimeNanos() 获取最后一次执行的监测任务的执行时间,单位纳秒
int getTaskCount() 获取已执行的监测任务数目
TaskInfo[] getTaskInfo() 获取所有监测任务信息,仅在keepTaskList属性为true时有效。
double getTotalTimeSeconds() 获取所有监测任务的总执行时间,单位为秒。
long getTotalTimeMillis() 获取所有监测任务的总执行时间,单位为毫秒。
long getTotalTimeNanos() 获取所有监测任务的总执行时间,单位为纳秒。
boolean isRunning() 判断当前StopWatch对象是否正在执行监测任务。
String shortSummary() 以字符串形式输出所有监测任务的简要信息,包括任务数目和总执行时间。
String prettyPrint() 以字符串形式输出所有监测任务的执行时间和详细信息。

StopWatch使用示例

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

        stopWatch.start("task1");
        System.out.println("当前任务名称:"+stopWatch.currentTaskName());
        Thread.sleep(1000);
        stopWatch.stop();
        System.out.println("task1耗时毫秒:"+stopWatch.getLastTaskTimeMillis());

        stopWatch.start("task2");
        System.out.println("当前任务名称:"+stopWatch.currentTaskName());
        Thread.sleep(2000);
        stopWatch.stop();
        System.out.println("task2耗时毫秒:"+stopWatch.getLastTaskTimeMillis());

        System.out.println("总任务数:"+stopWatch.getTaskCount());
        System.out.println("总耗时毫秒:"+stopWatch.getTotalTimeMillis());
        System.out.println("所有任务简要信息:\n"+stopWatch.shortSummary());
        System.out.println("所有任务详细信息:\n"+stopWatch.prettyPrint());
    }

输出:文章来源地址https://www.toymoban.com/news/detail-504817.html

当前任务名称:task1
task1耗时毫秒:1013
当前任务名称:task2
task2耗时毫秒:2014
总任务数:2
总耗时毫秒:3027
所有任务简要信息:
StopWatch '': running time = 3027555400 ns
所有任务详细信息:
StopWatch '': running time = 3027555400 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
1013462900  033%  task1
2014092500  067%  task2

到了这里,关于Spring计时器StopWatch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RIP四大计时器

    RIP 计时器(以下均以华为 ensp 中信息为参考) 希望有需要的小伙伴可以参考参考,如有误解、请指正! 一、实验原理 1. 更新计时器( Update Timer ) Update time(更新时间):指运行RIP协议的路由器向其连接口广播自己的路由信息的时间间隔(用于更新RIP路由表信息),控制

    2024年02月03日
    浏览(33)
  • 24秒计时器

    方案一:采用计数器(74LS192)作为核心部分。同时选择(74LS47)作为BCD码译码器来对7段数码显示管进行译码驱动,两个七段共阳数码显示管进行显示。采用计时器(NE555)制成的多谐振荡器,进行秒脉冲的输入。因为我们需要对其进行暂停、清零、报警和自动清零等控制,所

    2024年02月06日
    浏览(35)
  • 555计时器原理

    以Multisim上的555计时器为例: 图0.0 555计时器包含八个引脚 分别为: RST - Reset 复位引脚(低电平有效) DIS - Discharge 三极管集电极Collector输入引脚 THR - Threshold 上阈值电压引脚 TRI - Trigger 触发引脚 CON - Control voltage 1 电压控制引脚 OUT - Output 信号输出引脚 VCC GND 555定时器内部功能图

    2024年02月05日
    浏览(35)
  • java计时器

      在 Java中,我们有一个重要的概念:同步和异步。同步就是 Java中的线程安全,异步就是 Java中的线程非安全。 在使用 JVM时,我们一般都是用 start ()方法启动一个线程,然后设置时间,比如定时器,定时器是在某个指定的时间执行相应的任务。但是,在实际应用中,我们

    2023年04月18日
    浏览(48)
  • WPF计时器功能

    本文实现WPF的计时器功能是通过system.timers.timer这个组件实现的。现在网上相关的资料有很多,我只是在自己的工作中刚好遇到要实现这个功能,中间也走了很多的弯路,不停的参考网上现有的资源,终于实现了基本的定时功能。希望本文可以帮助到您,让您花更少的时间来完

    2024年02月05日
    浏览(39)
  • Verilog秒表计时器设计

    Verilog秒表计时器设计 设计一个基于Verilog的秒表计时器,该计时器可以在嵌入式系统中使用。下面是详细的设计说明和相应的源代码。 设计说明: 秒表计时器是一种常见的计时工具,可以用于测量时间间隔。在嵌入式系统中,我们可以使用Verilog语言来实现一个简单的秒表计

    2024年02月02日
    浏览(38)
  • STM32屏幕计时器

    显示屏显示计时时间,格式为 00:00:00 ,依次为 时:分:秒 ,程序运行之后自动计时,当按下按键,计时清零,按下按键采用外部中断。 调用lcd驱动代码让屏幕显示时间信息, 屏幕为SPI协议的128x128的LCD屏幕,查看原理图,找到对应接口 在STM32CubeMX中进行引脚配置 由于所调用的

    2024年02月09日
    浏览(29)
  • qt学习:QTimer定时器+重复计时+单次计时

    在指定的间隔时间会发送出一个timeout信号,关联对应的槽函数 #includeQTimer

    2024年01月19日
    浏览(50)
  • javaScript:快乐学习计时器

    目录 一.前言 二.计时器 1.计时器的分类 2. 创建计时器的方式 创建间隔计时器 创建方式三种 1.匿名函数 2.使用函数直接作为计时器的执行函数  2.使用函数直接作为计时器的执行函数,用字符串的形式写入  3.计时器的返回值 4.清除计时器  5.延迟计时器  相关代码        

    2024年02月12日
    浏览(32)
  • C语言/C++随机数生成,程序运行时间计时器(含高精度计时器),包括Windows环境与Linux环境

      🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨,经典算法的解析✨都在这儿,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -  数据结构与算法_勾栏听曲_0 🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️ 📌个人

    2023年04月26日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包