首页 > 其他分享 >StopWatch使用

StopWatch使用

时间:2022-11-02 11:25:35浏览次数:77  
标签:Thread 打印 sw 耗时 sleep 使用 StopWatch

StopWatch使用

来源

  1. 父类:Object
  2. 包名:org.springframework.util.StopWatch
  3. 线程安全:不安全,不可同步

测试

单任务测试

getTotalTimeMillis:获取总耗时,单位毫秒

getTotalTimeSeconds() :获取总耗时,单位秒

public class singleTest {  
  
    public static void main (String[] args) throws InterruptedException {  
        StopWatch sw = new StopWatch();  
        sw.start();  
        //doSomeThing  
        Thread.sleep(1000);  
        sw.stop();  
        System.out.println(sw.getTotalTimeMillis());  
    }  
}

返回:

1011

多任务测试

sw.prettyPrint():表格方式打印各个方法耗时

public class MuliTest {  
  
    public static void main (String[] args) throws InterruptedException {  
        StopWatch sw = new StopWatch();  
        sw.start("A方法");  
        Thread.sleep(500);  
        sw.stop();  
        sw.start("B方法");  
        Thread.sleep(300);  
        sw.stop();  
        sw.start("C方法");  
        Thread.sleep(200);  
        sw.stop();  
        System.out.println(sw.prettyPrint());  
    }  
}
StopWatch '': running time (millis) = 1031  
-----------------------------------------  
ms     %     Task name  
-----------------------------------------  
00514  050%  A方法  
00302  029%  B方法  
00215  021%  C方法

其他用法

不同的打印结果

  • getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法
  • prettyPrint() 优雅的格式打印结果,表格形式
  • shortSummary() 返回简短的总耗时描述
  • getTaskCount() 返回统计时间任务的数量
  • getLastTaskInfo().getTaskName() 返回最后一个任务TaskInfo对象的名称

实战使用

定位性能瓶颈

复杂业务场景中,一个流程可能会调用多方系统的接口,此时本系统的处理能力被各个接口性能所控制,打印各个接口原先使用starttime、endtime再相减计算,现在使用此类更加方便可提供表格汇总功能,更加直观!

打印关键日志

用于打印自己开发的方法的性能,更加方便使用,使得代码更加整洁

总结

​ StopWatch工具类大大提供了工作的效率,更加方便程序员快速撸代码!!!

参考资料

https://mp.weixin.qq.com/s/2ZTiWN5yp5sjjkOn8EQyNQ

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/StopWatch.html

标签:Thread,打印,sw,耗时,sleep,使用,StopWatch
From: https://www.cnblogs.com/tlxf-blog/p/16850381.html

相关文章

  • 【Android】Android开发之著名框架ButterKnife的使用详解,butterknife8.1.0版本的使用
    作者:程序员小冰长期维护的Android项目,里面包括常用功能实现,以及知识点详解,当然还有Java中的知识点。简单介绍一下,butterknife是一款非常著名的开源框架,省去了findViewById......
  • uniapp中使用vuex
    1.uniapp自带vuex,不需要在安装,创建store/index.js//引入vue和vueximportVuefrom'vue'importVuexfrom'vuex'Vue.use(Vuex)conststore=newVuex.Store({//全......
  • 数据透视表你只会手动创建吗?其实可以使用VBA一键生成噢
    Excel的数据透视表是一个非常强大的功能,说起数据透视表初次出现的时候,那是在我们Excel5的版本中间,在后续的版本依次更新迭代,直至目前仍然在改进中。当然我们今天不说基础的......
  • Web Uploader学习及使用
    ​ 前言WebUploader百度插件的使用:WebUploader是一个高效的文件上传组件,网址链接为:[WebUploader百度插件(http://fex.baidu.com/webuploader/)一、具体使用1.引入......
  • Docker简单使用(centos)
    DockerHelloWorldDocker允许你在容器内运行应用程序,使用dockerrun命令来在容器内运行一个应用程序。输出Helloworldroot@localhost:~$dockerrunubuntu:15.10......
  • 【typora】Markdown编辑器使用教程
    1.Markdown介绍Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。Markdown语言在2004由约翰·格鲁伯(英语:JohnGruber)创建。Markdown编写......
  • Jenkins Pipeline 流水线 - withCredentials 使用
    添加凭证Pipelinescriptpipeline{agentanystages{stage('withCredentials使用凭证'){steps{withCrede......
  • 010001 三角函数的基本使用
    直角三角函数的定义:正弦(sin)等于对边比斜边;sinA=a/c;余弦(cos)等于邻边比斜边;cosA=b/c;正切(tan)等于对边比邻边;tanA=a/b;余切(cot)等于邻边比对边;cotA=b/a;<?phpheader('Co......
  • 使用golang操作mongodb
    背景学习使用golang操作mongodb,主要是常见的增删改查。代码packagemainimport("context""fmt""log""go.mongodb.org/mongo-driver/bson"......
  • 使用 StringUtils.split 的坑
    点赞再看,动力无限。微信搜「程序猿阿朗」。本文Github.com/niumoo/JavaNotes和未读代码博客已经收录,有很多知识点和系列文章。在日常的Java开发中,由于JDK......