• 代码优化工具-测试程序执行时间-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();
     }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    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()是第一步自定义的方法,会格式化打印在这里插入图片描述

  • 相关阅读:
    线上扭蛋机小程序详解,扭蛋机带来的乐趣
    类类型参数函数调用发生了什么
    C++11(三)可变模板参数、lambda表达式、包装器
    SSM整合流程(整合配置、功能模块开发、接口测试)
    关于雅思听力答案限定字数的解释。
    .NET性能优化-快速遍历List集合
    C++常用设计模式:单例设计模式饿汉式和懒汉式详细说明
    【DropBlock】《DropBlock:A regularization method for convolutional networks》
    【数仓】flume常见配置总结,以及示例
    UVM实战笔记(二)
  • 原文地址:https://blog.csdn.net/weixin_43930851/article/details/132736916