概述
- 简单计时方式
一般我们检测某段代码执行的时间,都是以如下方式来进行的:
public static void main(String[] args) {
long startTime=System.currentTimeMillis(); //获取开始时间
//函数主体代码
long endTime=System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
}
- stopwatch计时器
Stopwatch用来计算经过的时间(精确到纳秒)。
这个类比调用System.nanoTime()优势在于:
- 性能
- 表现形式更丰富
类声明
以下是 com.google.common.base.Stopwatch 类的声明:
public final class Stopwatch extends Object
类方法
测试类
public class StopwatchDemo {
@Test
public void test1() throws Exception {
String orderNo = "12345678";
System.out.println("订单 [{" + orderNo + "}] 开始处理");
Stopwatch stopwatch = Stopwatch.createStarted();
TimeUnit.SECONDS.sleep(1); // 1秒处理时间
System.out.println("订单 [{" + orderNo + "}] 处理完成,耗时 [{" + stopwatch.stop() + "}]");
}
@Test
public void test2() throws Exception {
// 创建stopwatch并开始计时
Stopwatch stopwatch = Stopwatch.createStarted();
Thread.sleep(1980);
// 以秒打印从计时开始至现在的所用时间,向下取整
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 1
// 停止计时
stopwatch.stop();
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 1
// 再次计时
stopwatch.start();
Thread.sleep(100);
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 2
// 重置并开始
stopwatch.reset().start();
Thread.sleep(1030);
// 检查是否运行
System.out.println(stopwatch.isRunning()); // true
long millis = stopwatch.elapsed(TimeUnit.MILLISECONDS); // 1034
System.out.println(millis);
// 打印
System.out.println(stopwatch.toString()); // 1.034 s
}
public static void main(String[] args) throws InterruptedException {
// 创建自动start的计时器
Stopwatch watch = Stopwatch.createStarted();
Thread.sleep(1000L);
long time = watch.elapsed(TimeUnit.MILLISECONDS);
System.out.println("代码执行时长:" + time);
watch.reset();
watch.start();
Thread.sleep(500L);
time = watch.elapsed(TimeUnit.MILLISECONDS);
System.out.println("代码执行时长:" + time);
}
}
其他StopWatch计时器
apache的stopwatch
引入jar包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
代码示例
public static void main(String[] args) {
//创建并启动StopWatch
StopWatch stopwatch = StopWatch.createStarted();
//业务逻辑......
stopwatch.stop();
System.out.println(stopwatch.getTime(TimeUnit.MINUTES));
}
参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100250.html