使用StopWatch查看程序執行時間(普通篇)

在平時的開發調試工做中,時常會遇到程序執行效率很是慢,經過通常的經驗只能判斷出部分邏輯有問題,但判斷並不直觀且效率較低。這時咱們就會用一些比較直觀的方法來檢查,好比看看某一段程序執行的時間,從而來判斷是否比較耗時。比較經常使用的辦法就是在程序開始時使用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

相關文章
相關標籤/搜索