簡體   English   中英

將System.currentTimeMillis()與System.nanoTime()結合使用是否合理?

[英]Is it reasonable to use System.currentTimeMillis() in conjunction with System.nanoTime()?

這是我的建議:

  1. JVM啟動時
    1. 調用System.currentTimeMillis()並存儲為開始的“掛鍾”時間:
      long currentTimeMillis0
    2. 調用System.nanoTime()並將其存儲為開始的“ nano”時間:
      long nanoTime0
  2. 在整個程序運行期間,使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM