用StopWatch优雅替代currentTimeMillis计算程序执行耗时

网友投稿 291 2022-09-27


用StopWatch优雅替代currentTimeMillis计算程序执行耗时

需求

有时需要记录程序执行时间,最简单就是打印当前时间与执行完时间的差值,缺点是:

执行大量测试的话就很麻烦

不直观

如果想对执行的时间做进一步控制,则需要在程序中很多地方修改

于是 Spring提供了一个StopWatch类可以做类似任务执行时间控制,即封装了一个对开始时间,结束时间记录工具

案例

统计输出总耗时

import org.springframework.util.StopWatch;

public class SpringStopWatchExample {

public static void main (String[] args) throws InterruptedException {

StopWatch sw = new StopWatch();

sw.start();

//long task simulation

Thread.sleep(1000);

sw.stop();

System.out.println(sw.getTotalTimeMillis());

}

}

输出最后一个任务的耗时

public class SpringSrhITAPtopWatchExample2 {

public static void main (String[] args) throws InterruptedException {

StopWatch sw = new StopWatch();

sw.start("A");//setting a task name

//long task simulation

Thread.sleep(1000);

sw.stop();

System.out.println(sw.getLastTaskTimeMillis());

}

}

以优雅的格式打出所有任务的耗时以及占比

import org.springframework.util.StopWatch;

public class SpringStopWatchExample3 {

public static void main (String[] args) throws InterruptedException {

StopWatch sw = new StopWatch();

sw.start("A");

Thread.sleep(500);

sw.stop();

sw.start("B");

Thread.sleep(300);

sw.stop();

sw.start("C");

Thread.sleep(200);

sw.stop();

System.out.println(sw.prettyPrint());

}

}

序列服务输出耗时信息

@Override

public long nextSeq(String name) {

StopWatch watch = new StopWatch();

watch.start("单序列获取总消耗");

long sequence = generator.generateId(name);

watch.stop();

logger.info(watch.prettyPrint());

return sequence;

}

getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法

prettyPrint() 优雅的格式打印结果,表格形式

shortSummary() 返回简短的总耗时描述

getTaskCount() 返回统计时间任务的数量

getLastTaskInfo().getTaskName() 返回最后一个任务TaskInfo对象的名称


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HCNA——静态路由深入分析
下一篇:Mininet+RYU带宽保障
相关文章

 发表评论

暂时没有评论,来抢沙发吧~