経過時間の非常に正確な測定値を探しているだけの場合は、 を使用してSystem.nanoTime()
ください。System.currentTimeMillis()
エポックからの最も正確な経過時間をミリ秒単位でSystem.nanoTime()
提供しますが、任意のポイントに対してナノ秒の正確な時間を提供します。
Java ドキュメントから:
public static long nanoTime()
最も正確な使用可能なシステム タイマーの現在の値をナノ秒単位で返します。
このメソッドは、経過時間を測定するためにのみ使用でき、システム時間またはウォールクロック時間の他の概念とは関係ありません。返される値は、固定されているが任意の起点時刻からのナノ秒を表します (おそらく将来であるため、値は負の可能性があります)。この方法はナノ秒の精度を提供しますが、必ずしもナノ秒の精度ではありません。値が変更される頻度については保証されません。約 292 年 (2 63ナノ秒) を超える連続する呼び出しの違いは、
数値のオーバーフローのため、経過時間を正確に計算できません。
たとえば、一部のコードの実行にかかる時間を測定するには、次のようにします。
long startTime = System.nanoTime();
// ... the code being measured ...
long estimatedTime = System.nanoTime() - startTime;
詳細については、JavaDoc System.nanoTime()およびJavaDoc System.currentTimeMillis()も参照してください。