首页 > 其他分享 >耗时统计--StopWatch

耗时统计--StopWatch

时间:2023-01-11 22:34:42浏览次数:29  
标签:耗时 -- System currentTimeMillis stopWatch StopWatch start

耗时统计

在做性能优化的时候,耗时统计非常有用。
分析出时间主要消耗在哪里,才能够做出相应的优化。

System.currentTimeMillis()

平常我们在做耗时统计时,经常会用 System.currentTimeMillis(),如下:

        long start = System.currentTimeMillis();
        //其他逻辑
        long end = System.currentTimeMillis();
        System.out.println("it takes time:" + (end - start));

如果只有一个功能,那这样做还是可以的。但是如果有三四个功能,那反复地用 System.currentTimeMillis(),就会比较麻烦。
可以尝试下 StopWatch。

StopWatch 的依赖

在 apache、guava、spring的包里面,都有 StopWatch。
个人认为spring的 StopWatch比较好用些。依赖如下:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.4.RELEASE</version>
    </dependency>

StopWatch 常用的方法

StopWatch(String id) :构造方法,初始化
start(String taskName) :指定任务名称,开始统计
stop():结束统计
prettyPrint():非常有用的方法。可以显示出各个任务的耗时。

StopWatch 示例代码

import org.springframework.util.StopWatch;

public class StopWatchDemo {

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


    public static void stopWatch() throws InterruptedException {
        StopWatch stopWatch = new StopWatch("myStopWatch");

        stopWatch.start("任务1");
        Thread.sleep(2000);
        stopWatch.stop();

        stopWatch.start("任务2");
        Thread.sleep(1000);
        stopWatch.stop();

        //统计耗时
        System.out.println(stopWatch.prettyPrint());
    }

}

耗时统计结果如下:

StopWatch 'myStopWatch': running time (millis) = 3007
-----------------------------------------
ms     %     Task name
-----------------------------------------
02005  067%  任务1
01002  033%  任务2

标签:耗时,--,System,currentTimeMillis,stopWatch,StopWatch,start
From: https://www.cnblogs.com/expiator/p/17045089.html

相关文章

  • 2023-1-11 #26 我仍珍惜 你予我 这一段随时光起舞的情节
    今天dls来雅礼了,于是一行人围着yali转了几圈,去火宫殿吃了一顿!挺开心的。XXOpenCup,GrandPrixofTokyo。142ACookies143BEvacuation144CSumModuloDX......
  • 学习记录-适配器模式
    适配器模式适配器模式(AdapterPattern)是作为两个不兼容的接口之间的桥梁,它不会改变原先的接口。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式......
  • python excel转Markdown
    使用Python,将Excel表格转成Markdown格式。废话不多说直接上代码。Excel文件的位置:D:\data\data.xlsx代码执行完成之后会在python文件所在的位置生成一个output.txt文件,......
  • P2448 无尽的生命
    题目传送门题意简述看到题目显而易见是求逆序对个数。思路分析看到数据范围\(x_i,y_i\le2^{31}-1\),\(k\le10^5\)。数据值域大但是个数少,且与数据之间的大小关系有......
  • MySql学习笔记-进阶03
          ......
  • Ambari安装Hive启动时报无法创建虚拟机
    [root@hdp03hive]#cathive-server2.errError:VMoption'UseG1GC'isexperimentalandmustbeenabledvia-XX:+UnlockExperimentalVMOptions.Error:Couldnotcrea......
  • 2022ccpc绵阳站 2022 China Collegiate Programming Contest (CCPC) Mianyang Onsite
    C.​​CatchYouCatchMe​​题目大意:给你n条路径构成一个无向树,结点编号为1~n。在这棵树中,结点1为出口,其他所有结点上都有一只蝴蝶。每一分钟,每只蝴蝶都会沿着一条树的......
  • 总结几个常用的Git命令的使用方法
    1、Git的使用越来越广泛 现在很多的公司或者机构都在使用Git进行项目和代码的托管,Git有它自身的优势,很多人也喜欢使用Git。 我之前在公司最开始用的是SVN进行代码的托管,后面......
  • 为什么BI仪表板的共享功能对企业如此重要??
    随着大数据的发展,企业逐渐将数据作为其决策的重要组成部分,共享商业智能(BI)仪表板显得越来越重要。例如,在员工之间共享BI仪表板,不仅可以做出更好的数据驱动决策,还可以更好......
  • 【教你学Qt桌面端开发】pt1:浅谈Qt:特色C++主义类库
    还在为头脑简单看不懂代码而发愁吗?还在为思想浅薄只会人云亦云、拾人牙慧、鹦鹉学舌而遭人鄙夷吗?《教你写代码》,从另一维度解读代码,让你成为见解独特的黑马观众。教你学Q......