Guava之Stopwatch计时器-Guava

导读:本篇文章讲解 Guava之Stopwatch计时器-Guava,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概述

  1. 简单计时方式
    一般我们检测某段代码执行的时间,都是以如下方式来进行的:
public static void main(String[] args) {
         long startTime=System.currentTimeMillis();   //获取开始时间   
        //函数主体代码
         long endTime=System.currentTimeMillis(); //获取结束时间
         System.out.println("程序运行时间: "+(endTime-startTime)+"ms");        
}
  1. 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));
}

参考

Guava之Stopwatch
java计时器StopWatch

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100250.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!