Package org.miaixz.bus.core.center.date
Class StopWatch
java.lang.Object
org.miaixz.bus.core.center.date.StopWatch
秒表封装 此工具用于存储一组任务的耗时时间,并一次性打印对比。 比如:我们可以记录多段代码耗时时间,然后一次性打印(StopWatch提供了一个prettyString()函数用于按照指定格式打印出耗时)
此工具来自:https://github.com/spring-projects/spring-framework/blob/master/spring-core/src/main/java/org/springframework/util/StopWatch.java
使用方法如下:
StopWatch stopWatch = StopWatch.of("任务名称");
// 任务1
stopWatch.start("任务一");
Thread.sleep(1000);
stopWatch.stop();
// 任务2
stopWatch.start("任务二");
Thread.sleep(2000);
stopWatch.stop();
// 打印出耗时
Console.log(stopWatch.prettyPrint());
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription获取当前任务名,null表示无任务getId()获取StopWatch 的ID,用于多个秒表对象的区分获取最后的任务对象获取最后的任务名long获取最后任务的花费时间(毫秒)long获取最后任务的花费时间(纳秒)int获取任务数获取任务列表long获取所有任务的总花费时间long获取所有任务的总花费时间(毫秒)long获取所有任务的总花费时间(纳秒)double获取所有任务的总花费时间(秒)boolean检查是否有正在运行的任务static StopWatchof()创建计时任务(秒表)static StopWatch创建计时任务(秒表)生成所有任务的一个任务花费时间表,单位纳秒prettyPrint(TimeUnit unit) 生成所有任务的一个任务花费时间表voidsetKeepTaskList(boolean keepTaskList) 设置是否在停止后保留任务,false表示停止运行后不保留任务获取任务信息,类似于:shortSummary(TimeUnit unit) 获取任务信息,类似于:voidstart()开始默认的新任务void开始指定名称的新任务voidstop()停止当前任务toString()
-
Constructor Details
-
StopWatch
public StopWatch()构造,不启动任何任务 -
StopWatch
构造,不启动任何任务- Parameters:
id- 用于标识秒表的唯一ID
-
StopWatch
构造,不启动任何任务- Parameters:
id- 用于标识秒表的唯一IDkeepTaskList- 是否在停止后保留任务,false表示停止运行后不保留任务
-
-
Method Details
-
of
创建计时任务(秒表)- Returns:
- StopWatch
-
of
创建计时任务(秒表)- Parameters:
id- 用于标识秒表的唯一ID- Returns:
- StopWatch
-
getId
获取StopWatch 的ID,用于多个秒表对象的区分- Returns:
- the ID 默认为空字符串
- See Also:
-
setKeepTaskList
public void setKeepTaskList(boolean keepTaskList) 设置是否在停止后保留任务,false表示停止运行后不保留任务- Parameters:
keepTaskList- 是否在停止后保留任务
-
start
开始默认的新任务- Throws:
IllegalStateException- 前一个任务没有结束
-
start
开始指定名称的新任务- Parameters:
taskName- 新开始的任务名称- Throws:
IllegalStateException- 前一个任务没有结束
-
stop
停止当前任务- Throws:
IllegalStateException- 任务没有开始
-
isRunning
public boolean isRunning()检查是否有正在运行的任务- Returns:
- 是否有正在运行的任务
- See Also:
-
currentTaskName
获取当前任务名,null表示无任务- Returns:
- 当前任务名,
null表示无任务 - See Also:
-
getLastTaskTimeNanos
获取最后任务的花费时间(纳秒)- Returns:
- 任务的花费时间(纳秒)
- Throws:
IllegalStateException- 无任务
-
getLastTaskTimeMillis
获取最后任务的花费时间(毫秒)- Returns:
- 任务的花费时间(毫秒)
- Throws:
IllegalStateException- 无任务
-
getLastTaskName
获取最后的任务名- Returns:
- 任务名
- Throws:
IllegalStateException- 无任务
-
getLastTaskInfo
获取最后的任务对象- Returns:
StopWatch.TaskInfo任务对象,包括任务名和花费时间- Throws:
IllegalStateException- 无任务
-
getTotal
获取所有任务的总花费时间- Parameters:
unit- 时间单位,null表示默认TimeUnit.NANOSECONDS- Returns:
- 花费时间
-
getTotalTimeNanos
public long getTotalTimeNanos()获取所有任务的总花费时间(纳秒)- Returns:
- 所有任务的总花费时间(纳秒)
- See Also:
-
getTotalTimeMillis
public long getTotalTimeMillis()获取所有任务的总花费时间(毫秒)- Returns:
- 所有任务的总花费时间(毫秒)
- See Also:
-
getTotalTimeSeconds
public double getTotalTimeSeconds()获取所有任务的总花费时间(秒)- Returns:
- 所有任务的总花费时间(秒)
- See Also:
-
getTaskCount
public int getTaskCount()获取任务数- Returns:
- 任务数
-
getTaskInfo
获取任务列表- Returns:
- 任务列表
-
shortSummary
获取任务信息,类似于:StopWatch '[data]': running time = [total] ns- Returns:
- 任务信息
-
shortSummary
获取任务信息,类似于:StopWatch '[data]': running time = [total] [unit]- Parameters:
unit- 时间单位,null则默认为TimeUnit.NANOSECONDS- Returns:
- 任务信息
-
prettyPrint
生成所有任务的一个任务花费时间表,单位纳秒- Returns:
- 任务时间表
-
prettyPrint
生成所有任务的一个任务花费时间表- Parameters:
unit- 时间单位,null则默认TimeUnit.NANOSECONDS纳秒- Returns:
- 任务时间表
-
toString
-