在平時的開發調試工做中,時常會遇到程序執行效率很是慢,經過通常的經驗只能判斷出部分邏輯有問題,但判斷並不直觀且效率較低。這時咱們就會用一些比較直觀的方法來檢查,好比看看某一段程序執行的時間,從而來判斷是否比較耗時。比較經常使用的辦法就是在程序開始時使用System.currentTimeMillis()記個時,而後再結束時計個時,再進行兩個時間取差值就能夠看出來了。java
long stime =System.currentTimeMillis(); // ... 程序代碼 long etime =System.currentTimeMillis(); System.out.println("執行時間:"+(etime-stime));
但這種方法較麻煩,且若是同時要觀察多個代碼執行程序,要寫較多代碼。故如今能夠直接使用 org.springframework.util.StopWatch 類來幫咱們統計時間。spring
它能夠方便統計程序的每一段的執行時間,最後一塊兒輸出並顯示每個的時間佔比狀況。pwa
public void run() throws Exception { StopWatch stopWatch = new StopWatch("demo1"); stopWatch.start("step1"); step1(); stopWatch.stop(); stopWatch.start("step2"); step2(); stopWatch.stop(); stopWatch.start("step3"); step3(); stopWatch.stop(); System.out.println(stopWatch.prettyPrint()); } private void step1() throws InterruptedException { Thread.sleep(100L); } private void step2() throws InterruptedException { Thread.sleep(850L); } private void step3() throws InterruptedException { Thread.sleep(2000L); }
輸出結果:調試
StopWatch 'demo1': running time (millis) = 2972
-----------------------------------------
ms % Task name
-----------------------------------------
00108 004% step1
00861 029% step2
02003 067% step3code
從結果看出總執行時間爲2972ms,將每一步的進行時間和佔比,這樣咱們就很容易能夠排查哪個程序段執行的效率了,用起來特別方便。開發
雖然如今的方法已經很強大了,也很容易使用,但也要寫好多代碼並對被觀察的代碼段入侵太大,觀察完後也還要一行一行刪除代碼,下一篇文章將介紹stopwatch的註解式用法,觀察代碼更少,敬請期待。io