统计代码耗时的工具 StopWatch

简介: 项目中通常会通过打印时间来查看某段任务的耗时,进行项目优化

统计代码耗时的工具

项目中通常会通过打印时间来查看某段任务的耗时,进行项目优化
通常会通过t2-t1的方式进行统计

public static void main(String[] args) throws InterruptedException {
     StopWatchTest.test0();
//        StopWatchTest.test1();
}

public static void test0() throws InterruptedException {
     long start = System.currentTimeMillis();
     // do something
     Thread.sleep(100);
    long end = System.currentTimeMillis();
    long start2 = System.currentTimeMillis();
    // do something
    Thread.sleep(200);
    long end2 = System.currentTimeMillis();
    System.out.println("任务1执行耗时:" + (end - start));
    System.out.println("任务2执行耗时:" + (end2 - start2));
}

spring StopWatch用法

spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的Java类,小例一则如下

栗子:

package com.example.stopwatch;

import org.springframework.util.StopWatch;


public class TestStopWatch {
    private void test() throws InterruptedException {
        StopWatch sw = new StopWatch();

        sw.start("任务1");
        Thread.sleep(1000);
        sw.stop();

        sw.start("任务2");
        Thread.sleep(2000);
        sw.stop();

        sw.start("任务3");
        Thread.sleep(500);
        sw.stop();

        System.out.println(sw.prettyPrint());
        System.out.println(sw.getTotalTimeMillis());
        System.out.println(sw.getLastTaskName());
        System.out.println(sw.getLastTaskInfo());
        System.out.println(sw.getTaskCount());
    }


    public static void main(String []argv) throws InterruptedException {
        TestStopWatch testStopWatch = new TestStopWatch();
        testStopWatch.test();
    }
}

结果

StopWatch '': running time (millis) = 3518
-----------------------------------------
ms     %     Task name
-----------------------------------------
00998  028%  任务1
02020  057%  任务2
00500  014%  任务3
 
3518
任务3
org.springframework.util.StopWatch$TaskInfo@5b2133b1
3

一个StopWatch实例一次只能开启一个task,不能同时start多个task,并且在该task未stop之前不能start一个新的task,必须在该task stop之后才能开启新的task,若要一次开启多个,需要new不同的StopWatch实例.

计时器工具-TimeInterval

Hutool通过封装TimeInterval实现计时器功能,即可以计算方法或过程执行的时间。

TimeInterval支持分组计时,方便对比时间。

使用

TimeInterval timer = DateUtil.timer();

//---------------------------------
//-------这是执行过程
//---------------------------------

timer.interval();//花费毫秒数
timer.intervalRestart();//返回花费时间,并重置开始时间
timer.intervalMinute();//花费分钟数

也可以实现分组计时:

final TimeInterval timer = new TimeInterval();

// 分组1
timer.start("1");
ThreadUtil.sleep(800);

// 分组2
timer.start("2");
ThreadUtil.sleep(900);

Console.log("Timer 1 took {} ms", timer.intervalMs("1"));
Console.log("Timer 2 took {} ms", timer.intervalMs("2"));
相关文章
|
8月前
|
监控 Java Apache
优化开发效率:耗时分析利器Apache StopWatch
Apache StopWatch是Apache Commons库中的一个组件,它提供了简单而强大的计时器功能。StopWatch可以帮助开发人员精确地计时方法或代码块的执行时间,以便进行性能分析和优化。它提供了计时、暂停、继续、重置等功能,使我们能够更好地监控和控制代码的执行时间。
115 0
 优化开发效率:耗时分析利器Apache StopWatch
用StopWatch 统计代码耗时
用StopWatch 统计代码耗时
94 0
用StopWatch 统计代码耗时
|
Java
Java | 使用 StopWatch 优雅打印执行耗时
Java | 使用 StopWatch 优雅打印执行耗时
1067 0
|
Java
这4种方式,统计代码执行耗时,才足够优雅!
这4种方式,统计代码执行耗时,才足够优雅!
274 0
这样统计代码执行耗时,才足够优雅!
代码耗时统计在日常开发中算是一个十分常见的需求,特别是在需要找出代码性能瓶颈时。 可能也是受限于 Java 的语言特性,总觉得代码写起来不够优雅,大量的耗时统计代码,干扰了业务逻辑。特别是开发功能的时候,有个感受就是刚刚开发完代码很清爽优雅,结果加了一大堆辅助代码后,整个代码就变得臃肿了,自己看着都挺难受。因此总想着能不能把这块写的更优雅一点,今天本文就尝试探讨下“代码耗时统计”这一块。
|
Java
我们公司用了7年的代码执行耗时统计功能,太优雅了!!
我们公司用了7年的代码执行耗时统计功能,太优雅了!!
119 0
|
监控 Java 开发者
基于javaagent监控方法执行耗时
javaagent是在JDK5之后提供的新特性,也可以叫java代理。开发者通过这种机制(Instrumentation)可以在加载class文件之前修改方法的字节码(此时字节码尚未加入JVM),动态更改类方法实现AOP,提供监控服务如;方法调用时长、可用率、内存等。
396 0
基于javaagent监控方法执行耗时
|
Java Spring
别再用System.currentTimeMillis()!拥抱StopWatch优雅计算程序执行耗时
别再用System.currentTimeMillis()!拥抱StopWatch优雅计算程序执行耗时
126 0
如何优雅的统计代码耗时?
代码耗时统计在日常开发中算是一个十分常见的需求,特别是在需要找出代码性能瓶颈时。 可能也是受限于 Java 的语言特性,总觉得代码写起来不够优雅,大量的耗时统计代码,干扰了业务逻辑。特别是开发功能的时候,有个感受就是刚刚开发完代码很清爽优雅,结果加了一大堆辅助代码后,整个代码就变得臃肿了,自己看着都挺难受。因此总想着能不能把这块写的更优雅一点,今天本文就尝试探讨下“代码耗时统计”这一块。
188 0
|
移动开发 小程序 Java
这4种统计代码执行耗时,才足够优雅!
今天,跟大家分享一下,如何在代码中,统计接口耗时,最优雅,性能最高,接下来我将介绍4种统计方式,如果你有更好的方式,欢迎文末留言区,交流
717 0
这4种统计代码执行耗时,才足够优雅!