首頁 > 軟體

Springboot之如何統計程式碼執行耗時時間

2023-03-17 06:03:16

前言

近日群裡有萌新提到關於統計程式碼執行時間的事:

開始  System.currentTimeMillis()  減去  結束  System.currentTimeMillis()  等於  耗時   

其實我個人感覺OK的,就這樣就蠻好的,很多專案都是這樣用的。

簡簡單單的挺好。

正文

① StopWatch

第一種玩法,spring util 裡面提供的 StopWatch

範例程式碼:

StopWatch stopWatch = new StopWatch();
stopWatch.start();
//doInsert();
//執行業務等
stopWatch.stop();
System.out.println(stopWatch.getTotalTimeMillis());

效果: 

②  System.nanoTime()

第二種玩法   System.nanoTime()

先不著急看怎麼用, 我們看完第一種 StopWatch 的時候, 有沒有小夥伴的思維散發夠的,想著這spring 封裝的統計耗時,自己是怎麼實現的?

題外話:

一定要養成這種散發的思維, 很多兄弟朋友都跟我反饋過一些話題,就是說,專案裡面沒啥東西可學。 

其實,這個很正常, 工作過程不是教導過程,你要自己有 縱向 挖掘 橫向 散發的 學習思維。 

直接點StopWatch  的原始碼看一眼, 哦,原理是用的  System.nanoTime() :

 System.nanoTime() 程式碼使用範例 :

        long startTime = System.nanoTime();
        doInsert();
        //執行業務
        long endTime = System.nanoTime();
        System.out.println((endTime - startTime));

效果 :

③ new Date ()

第三種玩法 ,平時偶爾也看到別人這麼寫 new Date 

範例程式碼:

        Date startDate = new Date();
       // doInsert();
       //執行業務等
        Date endDate = new Date();
        System.out.println((endDate.getTime() - startDate.getTime()));

效果:

④  System.currentTimeMillis() 

省略

ps: StopWatch 其實不僅僅是封了一下耗時統計,這樣也太。。了  。

裡面其實封裝了蠻多其他關於時間統計的函數(感興趣的可以單獨去研究研究,特別是參考作者的封裝思路 ):

  • void start(“任務名稱”):開始一個任務名稱的計時
  • void stop():停止當前任務的計時
  • boolean isRunning():是否正在計時某任務
  • long getTotalTimeMillis():所有任務的總體執行時間(毫秒單位)
  • double getTotalTimeSeconds():所有任務的總時間(以秒為單位)
  • long getLastTaskTimeMillis():上一個任務的耗時(毫秒單位)
  • int getTaskCount():定時任務的數量
  • String prettyPrint():優美地列印所有任務的詳細耗時情況
  • StopWatch.TaskInfo[] getTaskInfo():包含任務名稱和任務耗時的實體類陣列

總結

好了,該篇就到這裡了~

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com