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)
上一篇 2022年6月23日 上午8:46
下一篇 2022年6月23日 上午9:00


相关推荐

  • USB-PD3.0(Power Delivery)充电协议

    USB-PD3.0(Power Delivery)充电协议USB PD PowerDeliver 是基于 USBType C 的一种电源供电标准 最大供电功率可达 100 瓦 W 随着 USBType C 的普及 越来越多的设备 手机 平板 显示器 工作站 充电器等 使用 USB PD 快速充电方案 1 USBType C 简介 Type C 是 USB 接口的一种形式 不分正反两面均可插入 支持 USB 标准的充电 数据传输 视频传输 音频传

    2026年3月17日
    2
  • 吃龙虾🦞咯!万字拆解OpenClaw的架构与设计

    吃龙虾🦞咯!万字拆解OpenClaw的架构与设计

    2026年3月13日
    3
  • jenkin swindows启动_mac系统下docker 部署jenkin s

    jenkin swindows启动_mac系统下docker 部署jenkin smac 系统下 docker 安装 jenkins 前提需要安装完 docker 在进行以下步骤操作 1 为了方便容器内对配置文件进行修改 需要先创建 Jenkins 挂载目录并授权权限 mkdir Users a docker jenkins homechmod777 Users a docker jenkins home2 使用 dockerpullje jenkins 命令 拉取 Jenki

    2026年3月16日
    2
  • send,recv,sendto,recvfrom

    send,recv,sendto,recvfrom

    2021年12月15日
    49
  • 评分卡建模流程

    评分卡建模流程基于 Logistic 回归的申请评分卡模型开发基本申请评分卡建模流程 1 数据准备 收集并整合在库客户的数据 定义目标变量 排除特定样本 2 探索性数据分析 评估每个变量的值分布情况 处理异常值和缺失值 3 数据预处理 变量筛选 变量分箱 WOE 转换 样本抽样 4 模型开发 逻辑回归拟合模型 5 模型评估 常见几种评估方法 ROC KS 等 6 生成评分卡 1 数据准备因为不同评级模型所需要的数据也是不

    2026年3月17日
    3
  • C#时间控件[通俗易懂]

    C#时间控件[通俗易懂]1、添加DateTimerPicker控件2、代码:dateTimePicker1.Format=DateTimePickerFormat.Custom;//设置Format属性为Custom,使用户自定义的时间格式生效dateTimePicker1.CustomFormat=”MMMMdd,yyyy-dddd”

    2022年5月24日
    40

发表回复

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

评论列表(1条)

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

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

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