Springboot中StopWatch的应用

一.应用背景

今天,组长交给一个很高大上的任务,优化某个功能的程序速度,打开代码一看,全是业务代码,直接脑洞爆炸,对于新接触业务的人直接猝死。只能摒弃观看代码,上工具进行测试了。

二.以往回顾介绍

在很久以前,我们进行方法时间性能测试,一般都会运用currentTimeMillis来进行(如下测试代码),但是这样代码量很多,并且不能集中直观的查看。 

public static void test() throws InterruptedException {
        long start = System.currentTimeMillis();
 
        Thread.sleep(100);
        long end = System.currentTimeMillis();
       
        System.out.println("执行耗时:" + (end - start));
}

三.StopWatch方法及应用 

对于以上问题,StopWatch进行了很大的集成,StopWatch是org.springframework.util中的一个类,属于spring-core jar包中的一部分,

1.StopWatch的方法简介:
方法描述介绍
void start()开始一个新的监测任务,可设置任务名称。记录当前时间和任务名称。
void stop()结束当前监测任务。记录任务执行时间,更新总执行时间和任务数量。
void setKeepTaskList(boolean keepTaskList)设置是否保留所有记录的监测任务,默认为true。
如果该值为true,则程序可以通过getTaskInfo()方法获取所有监测任务的详细信息。
String getId()获取唯一标识符。
String currentTaskName()获取当前正在运行的监测任务名称。
TaskInfo getLastTaskInfo()获取最后一次执行的监测任务的详细信息,包括任务名称、开始时间、结束时间和执行时间等。
String getLastTaskName()获取最后一次执行的监测任务的任务名称。
long getLastTaskTimeMillis()获取最后一次执行的监测任务的执行时间,单位毫秒。
long getLastTaskTimeNanos()获取最后一次执行的监测任务的执行时间,单位纳秒。
int getTaskCount()获取已执行的监测任务数目。
Tasklnfo[] getTasklnfo()获取所有监测任务信息,仅在keepTaskList属性为true时有效,
double getTotalTimeSeconds()获取所有监测任务的总执行时间,单位为秒。
long getTotalTimeMillis()获取所有监测任务的总执行时间,单位为毫秒。
long getTotalTimeNanos()获取所有监测任务的总执行时间,单位为纳秒。
boolean isRunning()判断当前StopWatch对象是否正在执行监测任务。
String shortSummary()以字符串形式输出所有监测任务的简要信息,包括任务数目和总执行时间。
String prettyPrint()以字符串形式输出所有监测任务的执行时间和详细信息。
2.StopWatch方法应用

我们在开发中其实主要应用到的就是 start() 、 stop()、getTotalTimeMillis()、getTaskCount()、getTaskInfo()、prettyPrint()方法。

public void stopwatchTest(){
        StopWatch sw = new StopWatch();
        sw.start("1");
        //方法
        sw.stop();
        sw.start("2");
        //方法
        sw.stop();
        sw.start("3");
        //方法
        sw.stop();
        sw.start("4");
        //方法
        sw.stop();
        System.out.println("所有任务总耗时:" + sw.getTotalTimeMillis());
        System.out.println("任务总数:" + sw.getTaskCount());
        System.out.println("所有任务详情:" + sw.getTaskInfo());
        System.out.println("所有任务详情:" + sw.prettyPrint());
    }

以上就是测试代码,最后console打印出来的数据如下(实际开发截图)

四.总结

以上就是对StopWatch的了解和实际开发中大家可以应用,对生产中方法调用及从controller --> service --> dao整个流程性能监控也很有帮助,不得不提醒的是在应用的过程中一定要当在合理得当的位置。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值