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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java集合介绍_arraylist原理

    java集合介绍_arraylist原理概述ArrayList是List接口下一个基于可扩展数组的实现类,它和它的兄弟类Vector有着一样的继承关系,也都能随机访问,但是不同的是不能保证线程安全。这是关于java集合类源

    2022年8月16日
    4
  • fastText原理和文本分类实战,看这一篇就够了[通俗易懂]

    fastText原理和文本分类实战,看这一篇就够了[通俗易懂]fastText原理篇一、fastText简介fastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点:1、fastText在保持高精度的情况下加快了训练速度和测试速度2、fastText不需要预训练好的词向量,fastText会自己训练词向量3、fastText两个重要的优化:HierarchicalSoftmax、N-gram二、fastText模型架构…

    2022年6月11日
    126
  • 已知前序遍历和中序遍历求二叉树[通俗易懂]

    已知前序遍历和中序遍历求二叉树[通俗易懂]描述输入某二叉树的前序遍历和中序遍历的结果,请输出后序遍历序列。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},重建二叉树并返回后序遍历序列输入输入某二叉树的前序遍历和中序遍历的结果输出输出后序遍历序列输入样例1 12473568…

    2022年9月10日
    0
  • 错误406(接口报406是什么原因)

    406错误错误提示:根据请求中接收的主动协商头字段,目标资源没有用户代理可接受的当前表示,并且服务器不愿意提供默认表示。出现的原因:1.请求地址的后缀问题不要些成.html不写或写词.json2.@设置了ResponseBody要把对象转换成json格式,但是缺少转换依赖的Jackson包SpringMVC默认依赖Jackson包,需要加一个Jackson包。$.ajax({url:’/topic/delete’,//后缀写词.json或者不写

    2022年4月11日
    129
  • 《数据结构》爆1133类和1134同学链接

    《数据结构》爆1133类和1134同学链接

    2022年1月9日
    52
  • 软件测试基础知识 – 说一说黑盒与白盒的测试方法[通俗易懂]

    软件测试基础知识 – 说一说黑盒与白盒的测试方法[通俗易懂]分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netDefinitionProvideasurrogateorplaceholderforanotherobjecttocontrolaccesstoit.ParticipantsTheclassesan…

    2022年6月1日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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