Spring計時器StopWatch的具體使用
StopWatch介紹
StopWatch類是Spring框架中用于測量代碼執(zhí)行時間的工具類,它提供了一系列屬性來記錄監(jiān)測信息。
本文基于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對象的唯一標(biāo)識符,可以通過構(gòu)造函數(shù)傳入。 |
keepTaskList | 表示是否保留所有記錄的監(jiān)測任務(wù),,默認為true。如果該值為true,則程序可以通過getTaskInfo()方法獲取所有監(jiān)測任務(wù)的詳細信息,否則僅可以獲取最后一次監(jiān)測任務(wù)的詳細信息。 |
taskList | 用于記錄所有的監(jiān)測任務(wù)信息,只有keepTaskList屬性值為true時才記錄任務(wù)信息,該值在stop()方法調(diào)用時添加一條任務(wù)信息。 |
currentTaskName | 表示當(dāng)前正在執(zhí)行的監(jiān)測任務(wù)名稱,該值在start()方法調(diào)用時設(shè)置。 |
lastTaskInfo | 表示最后一次執(zhí)行的監(jiān)測任務(wù)的詳細信息,包括任務(wù)名稱、執(zhí)行時間等,該值在stop()方法調(diào)用時設(shè)置。 |
taskCount | 表示執(zhí)行的監(jiān)測任務(wù)數(shù)目,該值在stop()方法調(diào)用時值+1。 |
totalTimeMillis | 表示該StopWatch對象記錄的所有監(jiān)測任務(wù)的總執(zhí)行時間,單位為毫秒,該值在stop()方法調(diào)用時值+當(dāng)前任務(wù)的執(zhí)行時間。 |
TaskInfo.taskName | 任務(wù)名稱。 |
TaskInfo.timeNanos | 任務(wù)執(zhí)行時間。 |
StopWatch方法詳解
方法 | 描述 |
---|---|
void setKeepTaskList(boolean keepTaskList) | 設(shè)置是否保留所有記錄的監(jiān)測任務(wù),默認為true。如果該值為true,則程序可以通過getTaskInfo()方法獲取所有監(jiān)測任務(wù)的詳細信息。 |
void start() | 開始一個新的監(jiān)測任務(wù),可設(shè)置任務(wù)名稱。記錄當(dāng)前時間和任務(wù)名稱。 |
void stop() | 結(jié)束當(dāng)前監(jiān)測任務(wù)。記錄任務(wù)執(zhí)行時間,更新總執(zhí)行時間和任務(wù)數(shù)量。 |
String getId() | 獲取唯一標(biāo)識符。 |
String currentTaskName() | 獲取當(dāng)前正在運行的監(jiān)測任務(wù)名稱。 |
TaskInfo getLastTaskInfo() | 獲取最后一次執(zhí)行的監(jiān)測任務(wù)的詳細信息,包括任務(wù)名稱、開始時間、結(jié)束時間和執(zhí)行時間等。 |
String getLastTaskName() | 獲取最后一次執(zhí)行的監(jiān)測任務(wù)的任務(wù)名稱 |
long getLastTaskTimeMillis() | 獲取最后一次執(zhí)行的監(jiān)測任務(wù)的執(zhí)行時間,單位毫秒 |
long getLastTaskTimeNanos() | 獲取最后一次執(zhí)行的監(jiān)測任務(wù)的執(zhí)行時間,單位納秒 |
int getTaskCount() | 獲取已執(zhí)行的監(jiān)測任務(wù)數(shù)目 |
TaskInfo[] getTaskInfo() | 獲取所有監(jiān)測任務(wù)信息,僅在keepTaskList屬性為true時有效。 |
double getTotalTimeSeconds() | 獲取所有監(jiān)測任務(wù)的總執(zhí)行時間,單位為秒。 |
long getTotalTimeMillis() | 獲取所有監(jiān)測任務(wù)的總執(zhí)行時間,單位為毫秒。 |
long getTotalTimeNanos() | 獲取所有監(jiān)測任務(wù)的總執(zhí)行時間,單位為納秒。 |
boolean isRunning() | 判斷當(dāng)前StopWatch對象是否正在執(zhí)行監(jiān)測任務(wù)。 |
String shortSummary() | 以字符串形式輸出所有監(jiān)測任務(wù)的簡要信息,包括任務(wù)數(shù)目和總執(zhí)行時間。 |
String prettyPrint() | 以字符串形式輸出所有監(jiān)測任務(wù)的執(zhí)行時間和詳細信息。 |
StopWatch使用示例
? ? public static void main(String[] args) throws InterruptedException { ? ? ? ? StopWatch stopWatch = new StopWatch(); ? ? ? ? stopWatch.start("task1"); ? ? ? ? System.out.println("當(dāng)前任務(wù)名稱:"+stopWatch.currentTaskName()); ? ? ? ? Thread.sleep(1000); ? ? ? ? stopWatch.stop(); ? ? ? ? System.out.println("task1耗時毫秒:"+stopWatch.getLastTaskTimeMillis()); ? ? ? ? stopWatch.start("task2"); ? ? ? ? System.out.println("當(dāng)前任務(wù)名稱:"+stopWatch.currentTaskName()); ? ? ? ? Thread.sleep(2000); ? ? ? ? stopWatch.stop(); ? ? ? ? System.out.println("task2耗時毫秒:"+stopWatch.getLastTaskTimeMillis()); ? ? ? ? System.out.println("總?cè)蝿?wù)數(shù):"+stopWatch.getTaskCount()); ? ? ? ? System.out.println("總耗時毫秒:"+stopWatch.getTotalTimeMillis()); ? ? ? ? System.out.println("所有任務(wù)簡要信息:\n"+stopWatch.shortSummary()); ? ? ? ? System.out.println("所有任務(wù)詳細信息:\n"+stopWatch.prettyPrint()); ? ? }
輸出:
當(dāng)前任務(wù)名稱:task1
task1耗時毫秒:1013
當(dāng)前任務(wù)名稱:task2
task2耗時毫秒:2014
總?cè)蝿?wù)數(shù):2
總耗時毫秒:3027
所有任務(wù)簡要信息:
StopWatch '': running time = 3027555400 ns
所有任務(wù)詳細信息:
StopWatch '': running time = 3027555400 ns
---------------------------------------------
ns % Task name
---------------------------------------------
1013462900 033% task1
2014092500 067% task2
到此這篇關(guān)于Spring計時器StopWatch的具體使用的文章就介紹到這了,更多相關(guān)Spring StopWatch內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys)
這篇文章主要介紹了Mybatis插入時返回自增主鍵方式(selectKey和useGeneratedKeys),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09MyBatis中調(diào)用存儲過程和函數(shù)的實現(xiàn)示例
在MyBatis中調(diào)用存儲過程和函數(shù)是一個相對高級的特性,本文主要介紹了MyBatis中調(diào)用存儲過程和函數(shù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Java獲取接口的所有實現(xiàn)類方法總結(jié)示例
這篇文章主要給大家介紹了關(guān)于Java獲取接口的所有實現(xiàn)類方法的相關(guān)資料,文中通過代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-06-06