java 中stopwatch,Stopwatch

java 中stopwatch,Stopwatch/***Anobjectthataccuratelymeasureselapsedtime:themeasureddurationbetweentwo*successivereadingsof”now”inthesameprocess.*一个精确计算消耗时间的对象:计算在同一进程中两次连续读取当前时间之间持续的时间*Incontrast,wallti…

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

/**

* An object that accurately measures elapsed time: the measured duration between two

* successive readings of “now” in the same process.

*一个精确计算消耗时间的对象:计算在同一进程中两次连续读取当前时间之间持续的时间

*

In contrast, wall time is a reading of “now” as given by a method like

* {

@link System#currentTimeMillis()}, best represented as an {

@link Instant}. Such values

* can be subtracted to obtain a {

@code Duration} (such as by {

@code Duration.between}), but

* doing so does not give a reliable measurement of elapsed time, because wall time readings

* are inherently approximate, routinely affected by periodic clock corrections. Because this class

* (by default) uses {

@link System#nanoTime}, it is unaffected by these changes.

*作为对照,实际时间是读取当前时间,就像System.currentTimeMillis()方法,一瞬间的最好代表。这种值相减可以得到一段时间,但是这样得不到准确的消耗的时间,因为实际时间读取是本质上近似的,

经常受到周期性时钟校正的影响。因为这个类使用System.nanoTime方法,它不受这些变化的影响

*

Use this class instead of direct calls to {@link System#nanoTime} for two reasons:

*用这个类代替直接调用System.nanoTime有两个原因

*

*

The raw {@code long} values returned by {@code nanoTime} are meaningless and unsafe to use

* in any other way than how {@code Stopwatch} uses them.

任何地方使用nanoTime返回的这个原生的long类型的值相对于Stopwatch使用它相比,毫无意义而且不安全

*

An alternative source of nanosecond ticks can be substituted, for example for testing or

* performance reasons, without affecting most of your code.

一个可供选择的资源是时间片段可以被替换,例如为了测试或性能原因,不影响你的大部分代码

*

*

*

Basic usage:

*

*

{@code

* Stopwatch stopwatch = Stopwatch.createStarted();

* doSomething();

* stopwatch.stop(); // optional

*

* Duration duration = stopwatch.elapsed();

*

* log.info(“time: ” + stopwatch); // formatted string like “12.3 ms”

* }

*

*

The state-changing methods are not idempotent; it is an error to start or stop a stopwatch

* that is already in the desired state.

*这个状态更改的方法不是幂等的,开始或停止一个已经处于期望状态的stopwatch对象是一个错误。

*

When testing code that uses this class, use {@link #createUnstarted(Ticker)} or {@link

* #createStarted(Ticker)} to supply a fake or mock ticker. This allows you to simulate any valid

* behavior of the stopwatch.

*当测试代码使用这个类,使用createUnstarted(Ticker)或createStarted(Ticker)提供一个假的或模拟的ticker,这里允许你模拟任何stopwatch有效的行为

*

Note: This class is not thread-safe.

*这个类是非线程安全的。

*

Warning for Android users: a stopwatch with default behavior may not continue to keep

* time while the device is asleep. Instead, create one like this:

*安卓用户的警告:设备休眠的时候stopwatch默认可能不会继续计算。代替的创建一个类似这种的代码:

*

{@code

* Stopwatch.createStarted(

* new Ticker() {

* public long read() {

* return android.os.SystemClock.elapsedRealtimeNanos();

* }

* });

* }

*

* @author Kevin Bourrillion

* @since 10.0

*/

总结:stopwatch主要功能就是两次star和stop调用之间的时间,还可以多次累加、可以重置。非线程安全的。

增加ticker的作用是可以自己替换和实现时间的读取。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152409.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 矩阵秩和伴随矩阵秩的关系「建议收藏」

    矩阵秩和伴随矩阵秩的关系「建议收藏」

  • SVN汉化包安装方法「建议收藏」

    SVN汉化包安装方法「建议收藏」注意:下载的svn汉化包必须与svn客户端版本对应,否则安装无效     1、首先安装svn客户端,然后将svn汉化包放在svn的安装目录下。   2、安装svn汉化包之前,将svn安装目录下的languages目录下的文件全部删除。3、svn汉化包安装完成后,选择中文即可

    2022年10月22日
  • 微信小程序制作表格代码「建议收藏」

    微信小程序制作表格代码「建议收藏」微信小程序中没有专门的表格制作工具,不过使用列表渲染可以实现,下面是我做的表格图片:方法如下:在XXX.wxml中填写下面的代码参数内容{{item.code}}{{item.text}}{{item.type}}

  • 股票软件受限解决方法[通俗易懂]

    股票软件受限解决方法[通俗易懂]现在很多内网都限制了股票软件的连接,WAYSONLINE除了游戏,股票软件也可代理,下面给大家分享一下具体使用。WaysonlineV3.0(以下简称V3)采用全新独创设计和高效编码,结合最新网络技术,已包含SocksCap/e-border/PSD等所有拦截功能,无需另外安装第三方软件,实现透明代理(类似VPN),即无需进行复杂的代理设置,即实现应用和游戏网络代理加速。

  • 关于QMap的几点总结思考

    关于QMap的几点总结思考关于QMap的几点总结思考题记:前段时间集中精力写了数据的分拣算法,用到了容器QMap和QMultiMap。回头再来回去该算法的时候,又觉得当时好像不是自己写的一样,于是有必要将QMap类来总结一下。首先来了解下C++中STL中的map:map是STL的一个关联容器,它提供一对一的hash。特点:第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。M

  • 机器学习 BP神经网络(Python实现)

    机器学习 BP神经网络(Python实现)一个神经元即一个感知机模型,由多个神经元相互连接形成的网络,即神经网络。这里我们只讨论单隐层前馈神经网络,其连接形式入下:神经网络模型的待估参数即,每个神经元的阈值,以及神经元之间的连接权重。对于该模型有如下定义:训练集:D={(x1,y1),(x2,y2),……,(xm,ym)},x具有d个属性值,y具有k个可能取值则我们的神经网络(单隐层前馈神经网络…

发表回复

您的电子邮箱地址不会被公开。

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