Guava之Stopwatch「建议收藏」

Guava之Stopwatch「建议收藏」Guava之Stopwatch计时器Stopwatch用来计算经过的时间(精确到纳秒)。这个类比调用System.nanoTime()优势在于:性能表现形式更丰富一、类声明以下是com.google.common.base.Stopwatch类的声明:publicfinalclassStopwatchextendsObject二、类方法方法类型方法…

大家好,又见面了,我是你们的朋友全栈君。

Guava之Stopwatch 计时器

Stopwatch用来计算经过的时间(精确到纳秒)。
这个类比调用System.nanoTime()优势在于:

  • 性能
  • 表现形式更丰富

一、类声明

以下是 com.google.common.base.Stopwatch 类的声明:

public final class Stopwatch extends Object

二、类方法

方法类型 方法描述
static Stopwatch createStarted()
创建启动一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。
static Stopwatch createStarted(Ticker ticker)
创建启动一个新的stopwatch对象,用的是特定的时间资源。
static Stopwatch createUnstarted()
创建(但不启动)一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。
static Stopwatch createUnstarted(Ticker ticker)
创建(但不启动)一个新的stopwatch对象,用的是特定的时间资源。
Duration elapsed()
返回将此秒表上显示的当前经过时间作为持续时间.
long elapsed(TimeUnit desiredUnit)
用特定的格式返回这个stopwatch经过的时间.
boolean isRunning()
如果start方法被调用。stop方法还没有调用。返回真.
Stopwatch reset()
把stopwatch经过的时间设置为零,状态设置为停止.
Stopwatch start()
启动 stopwatch.
Stopwatch stop()
停止stopwatch,读取的话将会返回经历过的时间.
String toString()
返回字符串形式的elapsed time.

三、测试类

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152453.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C# DialogResult.OK == Form.ShowDialog()

    C# DialogResult.OK == Form.ShowDialog()简要的分析:是将窗体显示为模式窗体并判断窗体的返回值来确定下一步的操作。DialogResult是Form类的一个属性,ShowDialog()是Form类的一个方法也就是函数。一般对话框上会有:确定,取消两个按钮。点击确定,会设置DialogResult=DialogResult.OK;点击取消,会设置DialogResult=DialogResult.Cancel;

    2022年6月22日
    82
  • JS全局变量不可使用的问题

    JS全局变量不可使用的问题关于js中全局变量不可使用的问题项目开发中,为了降低代码冗余,对于不同页面的相同代码可以放在一个public文件中,我的一个项目就遇到一个问题,我在一个js文件中定义的全局变量,在HTML和其他的JS文件中无法使用。解决办法我发现的是,我的全局变量放到了document.ready函数中,所以导致出现了函数的闭包问题,将变量的声明拿到ready函数之外就可以了,希望可以帮助到跟我遇到相同问题…

    2022年5月6日
    49
  • 计算机二级考试python怎么考_计算机二级python难度

    计算机二级考试python怎么考_计算机二级python难度2020.09.26更新:今天的二级python最后一个大题考试内容(部分),没考试的同学大家还可以最后挣扎一下。==========================================最新消息:2020年9月(第58次)全国计算机等级考试定于9月26日至29日举行。大家加油鸭!2020.8.15更新:==========2020.1.8更新:有同学问我的公共基础那10分是怎么拿到的,…

    2025年9月25日
    5
  • Maven 打包命令遇到的坑

    Maven 打包命令遇到的坑今天做定时任务的时候发现定时任务程序中的resources文件夹下面没有被打进去,导致部署在测试环境启动读取不到配置文件,本以为是框架的问题,原来是自己的问题。根据大神对打包的反编译才发现resouces里面的namespace配置根本没有被打包进去。自以为是的是打包进去了,浪费了一定的时间。那idea下的maven命令为什么是这样呢Cleancompileinstallpac

    2022年5月2日
    40
  • TransparentBitmap函数设置透明位图的原理分析

    TransparentBitmap函数设置透明位图的原理分析1、函数的功能:把一张位图设置成透明,不影响背景图的显示,并可改变大小2、函数的思想: (1)以当前的hdc创建5个设备兼容dc(HDC):hMem,hSave,hBack,hObject,hTemp (2)将要透明处理的位图块选入其中一个hTemp,获取宽高,并转换成逻辑点值; (3)创建4个临时位图(HBITMAP):bmMem,bmSave,bmBack,bmObjec

    2022年7月21日
    20
  • httpClient写简单的get请求访问百度网址和Springmvc本地controller

    httpClient写简单的get请求访问百度网址和Springmvc本地controller

    2021年7月19日
    89

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

  • Java03的头像
    Java03 2022年10月11日 上午9:28

    你说StopWatch比System.nanoTime()功能丰富我能理解,但你说StopWatch比nanotime性能更优我确实不太理解,StopWatch底层不还是用的System.nanoTime()吗,为什么性能更优呢?

关注全栈程序员社区公众号