m

moving1023

V1

2022/07/24阅读:17主题:重影

你还在使用System.currentTimeMillis()?来看看StopWatch吧

Spring 计时器 StopWatch

Spring提供了很多实用性的工具,StopWatch计时器可以用于我们代码执行的时间差

StopWatch 方法

  1. 创建:StopWatch stopWatch = new StopWatch(); //可以带参数
  2. 开始任务: stopWatch.start("taskName");
  3. 结束任务: stopWatch.stop();
  4. 打印: stopWatch.prettyPrint();

在日常开发中,我们经常需要通过记录代码执行的时间差,大家应该都比较常用System.currentTimeMillis 。今天我们列举两种方式,来看看其中的差异。

System.currentTimeMillis

public void oper1() throws Exception{
    long start = System.currentTimeMillis();
    TimeUnit.SECONDS.sleep(5);
    long t1 = System.currentTimeMillis();
    TimeUnit.SECONDS.sleep(2);
    long t2 = System.currentTimeMillis();
    TimeUnit.SECONDS.sleep(4);
    long end = System.currentTimeMillis();
    log.info("耗时统计:t1 -> {}毫秒, t2 -> {}毫秒, t3 -> {}毫秒", t1 - start, t2 - t1, end - t2);
}

我们需要设置好起始时间点和终止时间点,然后相减得出时间差。

StopWatch

public void oper2() throws Exception{
    StopWatch stopWatch = new StopWatch("oper2");
    stopWatch.start("t1");
    TimeUnit.SECONDS.sleep(5);
    stopWatch.stop();
    
    stopWatch.start("t2");
    TimeUnit.SECONDS.sleep(2);
    stopWatch.stop();
    
    stopWatch.start("t2");
    TimeUnit.SECONDS.sleep(4);
    stopWatch.stop();
    
    log.info(stopWatch.prettyPrint());
}

两段代码输出如下

StopWatch 输出的单位为纳秒 (1s = 10的9次方 ns) 还可以格式化输出更加直观,输出task名称,百分比等信息。

分类:

后端

标签:

后端

作者介绍

m
moving1023
V1