java 中stopwatch_StopWatch使用介绍「建议收藏」

java 中stopwatch_StopWatch使用介绍「建议收藏」StopWatch是Spring核心包中的一个工具类,它是一个简单的秒表工具,可以计时指定代码段的运行时间以及汇总这个运行时间,使用它可以隐藏使用System.currentTimeMillis(),提高应用程序代码的可读性并减少计算错误的可能性。注意事项StopWatch对象不是设计为线程安全的,并且不使用同步。使用场景一般是在开发过程中验证性能,而不是作为生产应用程序的一部分方法介绍//构…

大家好,又见面了,我是你们的朋友全栈君。

StopWatch是Spring核心包中的一个工具类,它是一个简单的秒表工具,可以计时指定代码段的运行时间以及汇总这个运行时间,使用它可以隐藏使用

System.currentTimeMillis() ,提高应用程序代码的可读性并减少计算错误的可能性。

注意事项

StopWatch对象不是设计为线程安全的,并且不使用同步。

使用场景

一般是在开发过程中验证性能,而不是作为生产应用程序的一部分

方法介绍

// 构建一个新的秒表,不开始任何任务。

public StopWatch()

//构造具有给定id的新秒表。不开始任何任务。

// 参数:id – 此秒表的标识符。当我们从多个秒表输出并需要区分它们时很方便。

public StopWatch(java.lang.String id)

//返回此秒表的ID。

public java.lang.String getId()

// 确定TaskInfo数组是否随着时间的推移而构建。当大量使用StopWatch时,将此设置为“false”,否则任务信息结构将消耗过多的内存。默认为“true”。

public void setKeepTaskList(boolean keepTaskList)

// 启动一个未命名的任务。如果stop() 调用或计时方法而不调用此方法,则结果未定义。

public void start();

// 启动命名任务。如果stop() 调用或计时方法而不调用此方法,则结果未定义。

// 参数: taskName – 要启动的任务的名称

public void start(java.lang.String taskName)

// 停止当前任务。如果在不调用至少一对start()/ stop()方法的情况下调用计时方法,则结果是不确定的 。

public void stop();

//返回秒表当前是否正在运行。

public boolean isRunning()

// 返回当前正在运行的任务的名称(如果有)。

@Nullable

public java.lang.String currentTaskName()

// 返回上一个任务所花费的时间。

public long getLastTaskTimeMillis();

// 返回上一个任务的名称。

public java.lang.String getLastTaskName()

// 将最后一个任务作为TaskInfo对象返回。

public StopWatch.TaskInfo getLastTaskInfo();

// 返回所有任务的总时间(以毫秒为单位)。

public long getTotalTimeMillis();

//返回所有任务的总时间(以秒为单位)。

public double getTotalTimeSeconds();

//返回定时任务的数量。

public int getTaskCount();

//返回执行任务的数据数组。

public StopWatch.TaskInfo [] getTaskInfo();

//返回总运行时间的简短描述。

public java.lang.String shortSummary();

// 返回一个字符串,其中包含描述所执行任务的表。

public java.lang.String prettyPrint();

//返回描述所有已执行任务的信息性字符串对于自定义报告

public java.lang.String toString();

实际应用

public class StopWatchTest {

public static void main(String[] args) throws InterruptedException {

StopWatch stopWatch = new StopWatch(“测试秒表”);

stopWatch.start(“暂停100毫秒”);

Thread.sleep(100 * 1);

stopWatch.stop();

stopWatch.start(“暂停200毫秒”);

Thread.sleep(100 * 2);

stopWatch.stop();

stopWatch.start(“暂停300毫秒”);

Thread.sleep(100 * 3);

stopWatch.stop();

stopWatch.setKeepTaskList(true); //是否构建TaskInfo信息

Arrays.stream(stopWatch.getTaskInfo()).forEach(sw ->

System.out.println(sw.getTaskName()+” “+

sw.getTimeMillis()+” “+sw.getTimeSeconds()));

// 在start()方法和stop()方法间时,isRunning()返回true

System.out.println(stopWatch.isRunning());

System.out.println(stopWatch.prettyPrint());//打印详细信息

System.out.println(stopWatch.shortSummary());//打印简要信息

}

}

打印效果

暂停100毫秒 110 0.11

暂停200毫秒 201 0.201

暂停300毫秒 310 0.31

false

StopWatch ‘测试秒表’: running time (millis) = 621

—————————————–

ms % Task name

—————————————–

00110 018% 暂停100毫秒

00201 032% 暂停200毫秒

00310 050% 暂停300毫秒

StopWatch ‘测试秒表’: running time (millis) = 621

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152428.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • A4988驱动42步进电机

    A4988驱动42步进电机A4988步进电机驱动器驱动控制42步进电机速度,步进电机调速,调节驱动电流1A4988步进电机驱动器简介方便使用,是我们这些用户最想要的,固有的名词和深入介绍在这就不多说了,您可以百度,或这下载附件,芯片手册中有详细的…

  • python进阶(8)多进程「建议收藏」

    python进阶(8)多进程「建议收藏」进程前置知识点进程:一个程序运行起来后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单元。并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行

  • pycharm的_pycharm conda

    pycharm的_pycharm conda不知道朋友们用过maven没有,使用JAVA编程的人应该有人用过这个有趣的东西,JAVA导包是容易的,然而,懒是没有极限了,所以maven出来了,一个丰满的开发包仓库,不需要你再去哪儿找找找。但是这又算得了什么,我们伟大的Python怎么可能弱,pip包安装管理器就是这样的存在,他使得安装pymodel变得和在linux下安装软件一样容易,只要简单的一句pipinstallsimplename

  • python3 gil锁_python 全局锁

    python3 gil锁_python 全局锁前言python的使用者都知道Cpython解释器有一个弊端,真正执行时同一时间只会有一个线程执行,这是由于设计者当初设计的一个缺陷,里面有个叫GIL锁的,但他到底是什么?我们只知道因为他导致pyt

  • 最长上升子序列nlogn算法

    最长上升子序列nlogn算法最长上升子序列nlogn算法题目描述:给定一个整型数组,求这个数组的最长严格递增子序列的长度。譬如序列12243的最长严格递增子序列为1,2,4或1,2,3.他们的长度为3。输入:输入可能包含多个测试案例。对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数,代表这个数组中的数字。整数均在int范围内。

  • C++多线程并发(五)—原子操作与无锁编程

    C++多线程并发(五)—原子操作与无锁编程一、何为原子操作前面介绍了多线程间是通过互斥锁与条件变量来保证共享数据的同步的,互斥锁主要是针对过程加锁来实现对共享资源的排他性访问。很多时候,对共享资源的访问主要是对某一数据结构的读写操作,如果数据结构本身就带有排他性访问的特性,也就相当于该数据结构自带一个细粒度的锁,对该数据结构的并发访问就能更加简单高效,这就是C++11提供的原子数据类型<atomic>。下面解释两个概念:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号