網頁

2014年3月15日 星期六

Commons Lang使用StopWatch

當需要計算特定的method或block所花費的執行時間時,通常可以利用System.currentTimeMillis() ,設定起始及結束時間,兩者相減所得的差異來得知,不過Apache Commons Lang 提供了StopWatch類別,可以更方便地得知詳細資訊。






start(), stop()

Mix建構1個StopWatch的實例,調用start(),執行特定的method或block後,再調用stop(),然後就可以用getTime(),來取得執行時間。

package org.openyu.java.commons.lang;

import org.apache.commons.lang.time.StopWatch;
import org.junit.Test;

public class StopWatchTest {

 @Test
 public void start() {
  StopWatch stopWatch = new StopWatch();
  stopWatch.start();
  //
  doTask(3 * 1000);
  //
  stopWatch.stop();
  System.out.println(" times: " + stopWatch.getTime() + " mills. ");
 }

 protected void doTask(long sleep) {
  try {
   Thread.sleep(sleep);
  } catch (InterruptedException ex) {
   ex.printStackTrace();
  }
 }
}



console查看其結果。

times: 9507 mills. 



split(), suspend(), resume()

StopWatch也提供了暫停,繼續與分割等方法,取得分割時間,Mix調用toSplitString(),來取得執行時間。

 @Test
 public void split() {
  StopWatch stopWatch = new StopWatch();
  stopWatch.start();

  //split 1
  doTask(3 * 1000);
  stopWatch.split();
  System.out.println("split 1: " + stopWatch.toSplitString());

  //suspend
  stopWatch.suspend();
  doTask(2 * 1000);
  //resume
  stopWatch.resume();

  //split 2
  doTask(1 * 1500);
  stopWatch.split();
  System.out.println("split 2: " + stopWatch.toSplitString());

  //split 3
  doTask(2 * 2500);
  stopWatch.split();
  System.out.println("split 3: " + stopWatch.toSplitString());

  stopWatch.stop();
  
  System.out.println("times: " + stopWatch.getTime() + " mills. ");
 }



console查看其結果。

split 1: 0:00:03.000
split 2: 0:00:04.507
split 3: 0:00:09.507
times: 9507 mills. 









沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...