A DESCRIPTION OF THE REQUEST :
See http://pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html
System.currentTimeMillis() takes about 650 ns on Linux with the HPET time source, compared to 4 ns on Windows.
The Linux implementation of currentTimeMillis calls gettimeofday. gettimeofday has higher precision than what's needed for currentTimeMillis. clock_gettime with a COARSE timer would be much faster, which would help a lot with the HPET time, but also with the TSC timer.
JUSTIFICATION :
If System.currentTimeMillis is called in a time-sensitive manner, the slower behaviour on Linux can be damaging, especially if the HPET timer happens to be used. Using a faster implementation would be beneficial without a drawback, since the granularity of the result is 1ms.
---------- BEGIN SOURCE ----------
See http://pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html for extensive tests and analysis.
---------- END SOURCE ----------
See http://pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html
System.currentTimeMillis() takes about 650 ns on Linux with the HPET time source, compared to 4 ns on Windows.
The Linux implementation of currentTimeMillis calls gettimeofday. gettimeofday has higher precision than what's needed for currentTimeMillis. clock_gettime with a COARSE timer would be much faster, which would help a lot with the HPET time, but also with the TSC timer.
JUSTIFICATION :
If System.currentTimeMillis is called in a time-sensitive manner, the slower behaviour on Linux can be damaging, especially if the HPET timer happens to be used. Using a faster implementation would be beneficial without a drawback, since the granularity of the result is 1ms.
---------- BEGIN SOURCE ----------
See http://pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html for extensive tests and analysis.
---------- END SOURCE ----------
- relates to
-
JDK-8242504 Enhance the system clock to nanosecond precision
- Resolved
-
JDK-8273453 Systematic investigation regarding latency for os::elapsed_counter() vs rdtsc()
- Open
-
JDK-6709908 System.currentTimeNanos() to support nanosecond precision
- Closed