2014-04-26 54 views
0

我有一個問題。我正在實現DPLL算法(我已經完成了)。現在我正在通過標準函數java api計算運行時間。DPLL算法 - 唯一的建議

System.currentTimeMillis(); 

的問題是,我必須提供測試結果我的問題,但相比於一切,我發現在互聯網上的資源,我的算法運行時間要好得多。現在要麼我找到了有史以來最好的算法實現(即排除),要麼函數返回錯誤的時間。

函數的時間單位是毫秒(ms)? 謝謝大家。

+0

又是什麼問題?你在問[this](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis%28%29)嗎? – ChiefTwoPencils

+0

,因爲我的算法比其他算法的時間少,以及這個短語的具體含義是什麼:「返回當前時間(以毫秒爲單位)。請注意,儘管返回值的時間單位是毫秒,但是值的粒度取決於基礎操作系統,並且可能會更大,例如,許多操作系統都以幾十毫秒爲單位來測量時間。「 – theblitz

+0

嘗試'nanoTime'和當前的Java。 currentTimeMillis有時可能返回相同的值。此外,最好與自己比較:較大的數據集,如此複雜的等等。 –

回答

2

System.currentTimeMillis()的準確性相當差(值以毫秒爲單位跳躍)。

對於基準或精確timeing,更好地利用System.nanoTime()代替,這確實(比的currentTimeMillis其他)表示日期/時間,而是一個時間偏移(以納秒爲單位,10^-9秒)。

+0

但該方法返回納秒或總是以毫秒爲單位的時間? – theblitz

+0

好的,我解決了!謝謝 – theblitz

+1

這是所有[在文檔中](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime%28%29)。 「返回的值代表了自一些固定但隨機起源時間以來的納秒。」因此,你不能用它來衡量*絕對時間*(即日曆日期和時間),但是你可以用它來衡量*相對時間*(即時間差異)。 –