Java Date Time 教程-時間測量
阿新 • • 發佈:2018-12-23
原文連結 作者:Jakob Jenkov 譯者:魏嘉鵬
在Java中,用System.currentTimeMillis()
來測量時間最方便。
你要做的是在某些操作之前獲取到時間,然後在這些操作之後你想要測量時間,算出時間差。下面是一個例子:
long startTime = System.currentTimeMillis(); callOperationToTime(); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime;
現在變數totalTime
將包含執行callOperationToTime()
反覆操作
由於System.currentTimeMillis()
沒有返回精準的時間,所以不止一次地去執行測量操作是個不錯的主意。也許10次、100次或者1000次,甚至更多。這樣由於大粒度時間值(該值並不是每毫秒都在變化著)而導致的非精準時間將趨於平穩。(原文:That way inaccuracy caused by large grained time values (values that does not change every millisecond) is leveled out.)
反覆執行很多次測量操作的另一個很好的理由是,允許Java
虛擬機器去裝載那些測量操作程式碼的classes
JVM
中的JIT
會將位元組程式碼中經常使用到的片段編譯為機器碼,帶來效能提升。有關JIT
有篇不錯的文章介紹,地址在這)
Timer類
前文所列出的計算方法是相當繁瑣的並且沉悶,我們可以將它封裝到一個Timer
類中,下面是大概的例子:
public class Timer { private long startTime = 0; private long endTime = 0; public void start(){ this.startTime = System.currentTimeMillis(); } public void end() { this.endTime = System.currentTimeMillis(); } public long getStartTime() { return this.startTime; } public long getEndTime() { return this.endTime; } public long getTotalTime() { return this.endTime - this.startTime; } }
下面是個如何使用Timer
類的例子:
Timer timer = new Timer(); timer.start(); callOperationToTime(); timer.end(); long totalTime = timer.getTotalTime();
(全文完)