统计代码耗时的工具 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"));
相关文章
|
Java fastjson API
Springboot 整合 xxljob 动态API调度任务(进阶篇)
Springboot 整合 xxljob 动态API调度任务(进阶篇)
7132 0
Springboot 整合 xxljob 动态API调度任务(进阶篇)
|
编解码 缓存 数据安全/隐私保护
浅析 HLS 流媒体协议
【2月更文挑战第13天】浅析 HLS 流媒体协议
1138 5
浅析 HLS 流媒体协议
|
Web App开发 容灾 安全
非功能关键知识总结
【2月更文挑战第4天】非功能关键知识总结
608 2
|
存储 Java 数据库连接
MyBatis-Plus 基础操作指南:实现高效的增删改查
MyBatis-Plus 基础操作指南:实现高效的增删改查
802 0
|
监控 IDE Java
JRebel插件使用详解
JRebel插件使用详解
JRebel插件使用详解
|
3月前
|
人工智能 自然语言处理 数据可视化
AI重新定义体育直播
2024年的AI体育直播正以前所未有的方式革新观赛体验:进球瞬间生成多语言解说、预判精彩镜头、实时战术分析、自动生成集锦。AI不仅取代传统导播,还提供风格化解说、情绪化运镜和防作弊辅助,让比赛更智能、互动更丰富。开发者可借助开源工具入局,未来或将实现全息解说与脑机直连,为体育注入科技魅力!
|
前端开发 JavaScript 数据安全/隐私保护
idea代码review工具Code Review Helper使用介绍
CodeReview IDEA 插件是一款用于代码审查的工具,旨在解决在GitLab中查看整体业务逻辑的不便。该插件提供快速添加注释、行号旁的评审意见标记、双击跳转到代码、意见删除和修改、内容导出为Excel以及导入等功能。特别地,它支持离线和在线模式,离线模式下,审核者和开发者通过Excel文件交换评审意见;在线模式则通过服务端实现评审内容的上传和下载,简化文件传输。此外,该插件允许定制评审字段,并能与团队协作工具集成。通过这些特性,CodeReview IDEA 提高了代码审查的效率和便捷性。
1442 2
|
11月前
|
关系型数据库 MySQL 索引
如果我需要一个联合索引,应该如何创建
【10月更文挑战第15天】如果我需要一个联合索引,应该如何创建
365 0
|
SQL druid Java
解决 ‘The last packet successfully received from the server was xxx milliseconds ago‘ 问题
解决 ‘The last packet successfully received from the server was xxx milliseconds ago‘ 问题
6358 0