RFR: 8180466: Clock.systemUTC has low resolution on Windows

David Holmes david.holmes at oracle.com
Wed Feb 27 07:20:09 UTC 2019


Hi Thomas,

I'm starting think I will have to close this as "will not fix". There is 
the performance aspect of the call itself to be potentially concerned 
about - though it would put it on a par with nanoTime() so I'm not that 
concerned. But I've also read that it can have problems during "system 
time adjustments" [1]

"The high resolution of GetSystemTimePreciseAsFileTime() is derived from 
the performance counter value at the time of the call and the 
performance counter frequency. However, the performance counter 
frequency should be corrected during system time adjustments to adapt to 
the modified progress in time. Current Windows versions don't do this. 
The obtained microsecond part may be severely affected when system time 
adjustments are active. ... As of Windows 10 (Build 10240), the 
inaccuracy of GetSystemTimePreciseAsFileTime() during system time 
adjustments persists."

That sounds like something that may introduce very obscure bugs. :(

David
-----

This is a very interesting read!
[1] http://www.windowstimestamp.com/description

On 26/02/2019 11:12 pm, David Holmes wrote:
> Hi Thomas,
> 
> On 26/02/2019 8:54 pm, Thomas Stüfe wrote:
>> Looks good.
> 
> Thanks for taking a look.
> 
>> I read somewhere that the ..precise.. API comes with a performance 
>> penalty, is that in some way measurable?
> 
> Not easily as I don't have a machine I can directly run measurements on, 
> but I'll do some more research and see what I can do.
> 
> Thanks,
> David
> 
>> Cheers, Thomas
>>
>> On Tue, Feb 26, 2019 at 1:32 AM David Holmes <david.holmes at oracle.com 
>> <mailto:david.holmes at oracle.com>> wrote:
>>
>>     bug: https://bugs.openjdk.java.net/browse/JDK-8180466
>>     webrev: http://cr.openjdk.java.net/~dholmes/8180466/webrev/
>>
>>     There is a new higher-resolution system time call available in 
>> Windows
>>     8+ and Windows Server 2012+. This enhancement uses the API if it is
>>     available at runtime.
>>
>>     Testing:
>>        - manual testing using the little "benchmark" in the bug report on
>>     Windows 7 (no new API) and later
>>        - java.time tests
>>
>>     Thanks,
>>     David
>>


More information about the hotspot-runtime-dev mailing list