Spring计时秒表StopWatch

代码中常规的耗时处理方法为:

	long start = System.currentTimeMillis();
	log.info("耗时{}毫秒", System.currentTimeMillis() - start);

Spring 提供了更好的一种实现方法,代码示例如下:

	StopWatch watch = new StopWatch("耗时示例");
	watch.start("开始点1");
	TimeUnit.SECONDS.sleep(2);
	watch.stop();
	watch.start("开始点2");
	TimeUnit.SECONDS.sleep(3);
	watch.stop();
	watch.start("开始点3");
	TimeUnit.MILLISECONDS.sleep(1200);
	watch.stop();
	
	log.info(watch.prettyPrint());

代码执行后的输入日志为:

StopWatch '耗时示例': running time (millis) = 6201
-----------------------------------------
ms     %     Task name
-----------------------------------------
02000  032%  开始点1
03001  048%  开始点2
01200  019%  开始点3

哪种方法更优雅,更好使,不言而喻。

然后你可以使用拦截器或者过滤器,在起始的时候将StopWatch对象放入ThreadLocal中,然后封装一个工具类,就可以在业务代码的任何地方“打点”了,在过滤器或拦截器的收尾处打印计时统计。这样用来做代码性能分析应该不错。

在封装的工具类中建议使用debug日志级别,线上的在必要的时候热切换日志打印级别分析问题(此前发过一个帖子实现日志级别不停机热切换的)。

(END)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catoop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值