方法
以前まではcurrentTimeMills()メソッドを使って、時間計測を行っていた。
しかし、非常に短い時間で行われる処理の計測をする場合、ミリ秒単位でしか測れないのでは
正確な時間測定ができない。
そのため、ナノ秒単位で時間測定を行えるnanoTime()メソッドで時間測定を行う。
long start = System.nanoTime();
// 計測したい処理を記述
long end = System.nanoTime();
long timeSeconds = TimeUnit.NANOSECONDS.toSeconds((end - start));
currentTimeMillis()との比較
currentTimeMillis | nanoTime | |
---|---|---|
特徴 | 1970年1月1日午前0時0分0秒からの経過秒数をミリ秒で表したもの | 時間測定だけに特化したメソッド。 |
メリット | スレッドセーフである。(複数のスレッドから呼び出されても安全なメソッドであること。) | ナノ秒単位で測れるので、currentTimeMillisよりも正確な時間測定が可能 |
デメリット | 過去のある時点からの時間計測をする際に、うるう秒を含んでないため、測定結果がずれる可能性がある | スレッドセーフではない。 |