日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Spring計時器StopWatch

作者:騎個小蝸牛 更新時間: 2023-07-10 編程語言

文章目錄

  • StopWatch介紹
  • StopWatch屬性詳解
  • StopWatch方法詳解
  • StopWatch使用示例


StopWatch介紹

StopWatch類是Spring框架中用于測量代碼執行時間的工具類,它提供了一系列屬性來記錄監測信息。

本文基于spring-boot-starter-web:2.2.2RELEASE版本。

源碼:

public class StopWatch {
    private final String id;
    private boolean keepTaskList = true;
    private final List<StopWatch.TaskInfo> taskList = new LinkedList<>();
    private long startTimeMillis;
    @Nullable
    private String currentTaskName;
    @Nullable
    private StopWatch.TaskInfo lastTaskInfo;
    private int taskCount;
    private long totalTimeMillis;

	......方法略
	public static final class TaskInfo {

		private final String taskName;
	
		private final long timeNanos;
	}
}

StopWatch屬性詳解

屬性 描述
id 表示該StopWatch對象的唯一標識符,可以通過構造函數傳入。
keepTaskList 表示是否保留所有記錄的監測任務,,默認為true。
如果該值為true,則程序可以通過getTaskInfo()方法獲取所有監測任務的詳細信息,否則僅可以獲取最后一次監測任務的詳細信息。
taskList 用于記錄所有的監測任務信息,只有keepTaskList屬性值為true時才記錄任務信息,該值在stop()方法調用時添加一條任務信息。
currentTaskName 表示當前正在執行的監測任務名稱,該值在start()方法調用時設置。
lastTaskInfo 表示最后一次執行的監測任務的詳細信息,包括任務名稱、執行時間等,該值在stop()方法調用時設置。
taskCount 表示執行的監測任務數目,該值在stop()方法調用時值+1。
totalTimeMillis 表示該StopWatch對象記錄的所有監測任務的總執行時間,單位為毫秒,該值在stop()方法調用時值+當前任務的執行時間。
TaskInfo.taskName 任務名稱。
TaskInfo.timeNanos 任務執行時間。

StopWatch方法詳解

方法 描述
void setKeepTaskList(boolean keepTaskList) 設置是否保留所有記錄的監測任務,默認為true。
如果該值為true,則程序可以通過getTaskInfo()方法獲取所有監測任務的詳細信息。
void start() 開始一個新的監測任務,可設置任務名稱。記錄當前時間和任務名稱。
void stop() 結束當前監測任務。記錄任務執行時間,更新總執行時間和任務數量。
String getId() 獲取唯一標識符。
String currentTaskName() 獲取當前正在運行的監測任務名稱。
TaskInfo getLastTaskInfo() 獲取最后一次執行的監測任務的詳細信息,包括任務名稱、開始時間、結束時間和執行時間等。
String getLastTaskName() 獲取最后一次執行的監測任務的任務名稱
long getLastTaskTimeMillis() 獲取最后一次執行的監測任務的執行時間,單位毫秒
long getLastTaskTimeNanos() 獲取最后一次執行的監測任務的執行時間,單位納秒
int getTaskCount() 獲取已執行的監測任務數目
TaskInfo[] getTaskInfo() 獲取所有監測任務信息,僅在keepTaskList屬性為true時有效。
double getTotalTimeSeconds() 獲取所有監測任務的總執行時間,單位為秒。
long getTotalTimeMillis() 獲取所有監測任務的總執行時間,單位為毫秒。
long getTotalTimeNanos() 獲取所有監測任務的總執行時間,單位為納秒。
boolean isRunning() 判斷當前StopWatch對象是否正在執行監測任務。
String shortSummary() 以字符串形式輸出所有監測任務的簡要信息,包括任務數目和總執行時間。
String prettyPrint() 以字符串形式輸出所有監測任務的執行時間和詳細信息。

StopWatch使用示例

    public static void main(String[] args) throws InterruptedException {
        StopWatch stopWatch = new StopWatch();

        stopWatch.start("task1");
        System.out.println("當前任務名稱:"+stopWatch.currentTaskName());
        Thread.sleep(1000);
        stopWatch.stop();
        System.out.println("task1耗時毫秒:"+stopWatch.getLastTaskTimeMillis());

        stopWatch.start("task2");
        System.out.println("當前任務名稱:"+stopWatch.currentTaskName());
        Thread.sleep(2000);
        stopWatch.stop();
        System.out.println("task2耗時毫秒:"+stopWatch.getLastTaskTimeMillis());

        System.out.println("總任務數:"+stopWatch.getTaskCount());
        System.out.println("總耗時毫秒:"+stopWatch.getTotalTimeMillis());
        System.out.println("所有任務簡要信息:\n"+stopWatch.shortSummary());
        System.out.println("所有任務詳細信息:\n"+stopWatch.prettyPrint());
    }

輸出:

當前任務名稱:task1
task1耗時毫秒:1013
當前任務名稱:task2
task2耗時毫秒:2014
總任務數:2
總耗時毫秒:3027
所有任務簡要信息:
StopWatch '': running time = 3027555400 ns
所有任務詳細信息:
StopWatch '': running time = 3027555400 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
1013462900  033%  task1
2014092500  067%  task2

原文鏈接:https://blog.csdn.net/JokerLJG/article/details/129010224

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新