[英]Is it reasonable to use System.currentTimeMillis() in conjunction with System.nanoTime()?
這是我的建議:
System.currentTimeMillis()
並存儲為開始的“掛鍾”時間: long currentTimeMillis0
。 System.nanoTime()
並將其存儲為開始的“ nano”時間: long nanoTime0
。 System.nanoTime()
存儲許多時間戳。 我很清楚nanoTime的確切值本身是沒有用的,但是在持續時間范圍內使用時很有用: endNanoTime - beginNanoTime
。
那么在任何記錄的nanoTime上,將“ currentTimeNanos”計算為:
(1000L * currentTimeMillis0) + (anyNanoTime - nanoTime0)
嗎?
我認為您需要結合開始/結束時間,包括毫秒和毫微秒。 例如:
long startTimeMillis = System.currentTimeMillis() * 1000;
long startTimeNano = System.nanoTime();
... // do some work
long currentTimeNano = (System.currentTimeMillis()*1000 - startTimeMillis) + (System.nanoTime() - startTimeNano);
有關更多信息,請參見nanoTime方法的官方javadoc: https : //docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime()
我使用毫秒和毫微秒的時間的地方是使用毫微秒來計算時間的細微差異,並在開始時提供一次毫秒的計時器。
注意:如果您有連續的計時流,可以在機器之間使用納秒制。 即,您可以估計它們之間的最佳時間並檢測異常值(即使您不知道絕對差異),我也可以使用此類來估算RunningMinimum
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.