原因

2017-06-10 62 views
2

我最近一直在與一些Java中的表現例子,碰到這個片斷:原因

long start = System.nanoTime(); 
// code to be timed goes here... 
long finish = System.nanoTime(); 
long error = System.nanoTime() - finish; 
long duration = finish - start - error; 

現在我明白了什麼代碼是幹什麼的,但不必然爲什麼error時機也在被扣除?次

大量我見過這樣的事情:

long start = System.nanoTime(); 
// code to be timed goes here... 
long finish = System.nanoTime(); 
long duration = finish - start; 

但不是在此之前的附加誤差時間的概念。

回答

2

這樣做是爲了減去執行long finish = System.nanoTime();指令所需的時間。作者不希望停止秒錶來計算正在測試的代碼。

除非你真的在處理納米級別的精度,否則這是矯枉過正的,甚至可能沒有真正解釋作者的意圖。