StopWatch任务执行时间监控

        在最近代码codereview中,发现代码中大量使用了StopWatch 这个类去监视执行的时间。这里总结一下大概的介绍。StopWatch 在spring中和apache中均提供了类似的功能,这里分别介绍一下。


一、Apache下的StopWatch

      StopWath是apache commons lang包下的一个任务执行时间监视器,具体位置是org.apache.commons.lang3.time,常用的api 如下:

     主要方法:

          start();     //开始计时

          split();     //设置split点

          getSplitTime();  //获取从start 到 最后一次split的时间

          reset();     //重置计时

          suspend();     //暂停计时, 直到调用resume()后才恢复计时

          resume();      //恢复计时

          stop();      //停止计时

         getTime();    //统计从start到现在的计时


使用demo如下:

import org.apache.commons.lang3.time.StopWatch;

public class StopWatchTest 
{
	public static void main(String[] args) throws InterruptedException {
		StopWatch watch = new StopWatch();
		watch.start();
		
		//统计从start开始经历的时间
		Thread.sleep(1000);
		System.out.println(watch.getTime());
		
		//统计计时点
		Thread.sleep(1000);
		watch.split();
		System.out.println(watch.getSplitTime());
		
		//统计计时点
		Thread.sleep(1000);
		watch.split();
		System.out.println(watch.getSplitTime());
		
		//复位后, 重新计时
		watch.reset();
		watch.start();
		Thread.sleep(1000);
		System.out.println(watch.getTime());
		
		//暂停 与 恢复
		watch.suspend();
		System.out.println("暂停2秒钟");
		Thread.sleep(2000);
		
		watch.resume();
		Thread.sleep(1000);
		watch.stop();
		System.out.println(watch.getTime());
	}
	
}


二、spring中的stopwatch

     该类存在于org.springframework.util.StopWatch ,特点是StopWatch该类在统计时间的时候,必须得前一个对象关闭才能创建新的StopWatch,并且在统计完成后,只需要将其输出,就可以像报表一样,显示统计的时间 
在开发中,常用于统计时间的是 使用 System.currentTimeMillis();进行统计,并且当执行完毕后, 
还需要相减,才能得到最终时间值,这里直接提供了获取功能

public static void main(String[] args) throws InterruptedException {
    StopWatch sw = new StopWatch();
    sw.start("读取文件");
    Thread.sleep(1000);
    sw.stop();
    sw.start("文件删除");
    Thread.sleep(100);
    sw.stop();
    sw.start("文件拷贝");
    Thread.sleep(10);
    sw.stop();
    System.out.println(sw.prettyPrint());
     
    long stime =System.currentTimeMillis();
    Thread.sleep(1000);
    long etime =System.currentTimeMillis();
    System.out.println("执行时间:"+(etime-stime));
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值