在今天进行debug
的时候,我突然想知道一段业务代码执行需要多少时间。
这也很简单,打上日志输出耗时就行了。
可是,当时的项目已经debug
启动,想要输出还得改代码,还得重新启动
这就很麻烦了,有没有什么其他方法呢?
还真的有,这个IDEA
中debug
带的功能,我们使用下就可以进行输出耗时了,如下
假设我们有这么一段代码,中间的睡眠,我们模拟业务的方法调用
我们只需要在前面打上断点
需要在这里输入什么代码呢?
本文考虑的是耗时,所以我找了一个工具类,如下
package com.banmoon.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.util.StrUtil;
/**
* DEBUG时,执行的耗时扩展工具
*
* @author banmoon
* @date 2024/03/28 14:53:24
*/
public class TimeIntervalUtil {
private static TimeInterval timeInterval;
/**
* 初始化计时器
*/
public static String init() {
return init(false);
}
/**
* 初始化计时器
*
* @param isNano 是否使用纳秒计数,false则使用毫秒
*/
public static String init(boolean isNano) {
timeInterval = DateUtil.timer(isNano);
return StrUtil.format("计时开始,当前时间:{}", DateUtil.now());
}
/**
* 分组计时
*
* @param groupId 分组ID
*/
public static String start(String groupId) {
timeInterval.start(groupId);
return StrUtil.format("分组计时开始,分组ID:{},当前时间:{}", groupId, DateUtil.now());
}
/**
* 耗时输出
*/
public static String intervalPretty() {
String pretty = timeInterval.intervalPretty();
return StrUtil.format("耗时:{}", pretty);
}
/**
* 耗时输出
*/
public static String intervalPretty(String groupId) {
String pretty = timeInterval.intervalPretty(groupId);
return StrUtil.format("分组ID:{},耗时:{}", groupId, pretty);
}
}
代码比较简单,都看懂了吧
我们只需要输入这样的方法,一个断点一条
TimeIntervalUtil.init()
TimeIntervalUtil.intervalPretty()
这两个断点是黄色的,这种是不会打断执行的。那么执行一下看看效果,成功!!
当然了,上面只是试了其中的一个计时api
,还可以使用分组计时,具体自己看下文档吧。
这个功能,我常常这样使用。在我们发起调用后,突然发现方法中,某个变量要改动,一次还行,多次调用排查问题就会显得很麻烦。
我直接上面那样操作一下,赋值某个具体的值。这样,就不用每次进行修改赋值了。
比较常见于使用的token
是这个人的,调试的时候不想改token
,我直接改那个从token
中拿出来的userId
。
我是半月,你我一同共勉!!!