代码优化工具-测试程序执行时间-IDEAdebug+StopWatch

参考:
[技巧]IDEA的debug+StopWatch监测程序运行时间

添加链接描述

1创建类StopWatchExpand
创建在微服务中的结构在这里插入图片描述

 import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.StopWatch;

 import java.text.NumberFormat;

 /**
 * 检测程序片段运行时间拓展
 *
 * @author sdevil507
 * created on 2021/5/27
 */
@Slf4j
public class StopWatchExpand {

 /**
  * StopWatch实例
  */
 private static StopWatch STOP_WATCH;

 /**
  * StopWatch实例初始化
  */
 public static void init() {
  STOP_WATCH = new StopWatch("运行时间");
 }

 /**
  * 开启计时
  *
  * @param taskName 任务名称
  * @return 提示字符串
  */
 public static String start(String taskName) {
  STOP_WATCH.start(taskName);
  return "[ 任务: " + taskName + " ]" + " 监测运行时间开始......";
 }

 /**
  * 结束计时
  */
 public static void stop() {
  STOP_WATCH.stop();
 }

 /**
  * 格式化的统计输出
  *
  * @return 统计输出
  */
 public static String prettyPrint() {
  // 获取运行的毫秒数与秒数
  long totalTimeMillis = STOP_WATCH.getTotalTimeMillis();
  double totalTimeSeconds = STOP_WATCH.getTotalTimeSeconds();
  // 编写总结
  String shortSummary = "StopWatch '" + STOP_WATCH.getId() + "': running time [ " + String.format("%9s", totalTimeMillis) + "ms / " + String.format("%9.3f", totalTimeSeconds) + "s ]";
  StringBuilder sb = new StringBuilder();
  sb.append("---------------------------------------------------------------\n");
  sb.append(shortSummary);
  sb.append('\n');
  sb.append("---------------------------------------------------------------\n");
  sb.append("       ms           s      %      Task name\n");
  sb.append("---------------------------------------------------------------\n");
  NumberFormat pf = NumberFormat.getPercentInstance();
  pf.setMinimumIntegerDigits(3);
  pf.setGroupingUsed(false);
  for (StopWatch.TaskInfo task : STOP_WATCH.getTaskInfo()) {
   sb.append(String.format("%9s", task.getTimeMillis())).append("   ");
   sb.append(String.format("%9.3f", task.getTimeSeconds())).append("   ");
   sb.append(pf.format((double) task.getTimeMillis() / totalTimeMillis)).append("      ");
   sb.append(task.getTaskName()).append("\n");
  }
  return sb.toString();
 }
}

2在需要查看代码的时间的地方打断点并进去
在这里插入图片描述
在这里插入图片描述

把默认勾选的挂起 取消勾选,更多就变成如第二张图,勾选“求值并记录”

(0)在最开始的地方设置init:StopWatchExpand.init();StopWatchExpand.start("任务1");
表示设置init初始化并启动第一个任务
(1)在代码开始段设置start:StopWatchExpand.start("获取basic");
在这里插入图片描述
(2)在代码末尾段设置StopWatchExpand.stop();StopWatchExpand.start("任务2");
表示任务1结束,任务2开始
可以添加多个StopWatchExpand.stop();StopWatchExpand.start("任务xxx");表示上一个任务结束,下一个任务开始
(3)在函数结尾处添加设置StopWatchExpand.stop();StopWatchExpand.prettyPrint();
表示所有任务结束并打印每一个的任务详情

在这里插入图片描述
注意:可以在每个需要看时长的地方加上start和stop【这两个是一对,前提是一定要init】,最后调用的prettyPrint()是第一步自定义的方法,会格式化打印在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耳东哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值