Date precision on Windows
Andrew Haley
aph at redhat.com
Mon Sep 14 13:27:35 UTC 2009
Max (Weijun) Wang wrote:
> Recently one of my Kerberos tests always reports "replay detected"
> error. Turns out the time precision on Windows is quite low.
>
> I've written this tiny program. It calls new Date().getTime() as fast as
> possible and try to see if the output is continuous:
>
> class A {
> public static void main(String[] rags) throws Exception {
> int[] x = new int[100];
> long l = new java.util.Date().getTime();
> while (true) {
> long m = new java.util.Date().getTime();
> if (m - l >= 100) break;
> x[(int)(m-l)]++;
> }
> for (int i=0; i<100; i++) {
> System.out.printf("%5d %d\n", i, x[i]);
> }
> }
> }
>
> On Linux and Solaris, there are only 2 to 5 zeros in the output, which
> shows the time is quite continuous on these systems. However, on Windows
> (a x64 system), only 1/16th are non zeros, which shows the maximum
> precision on Windows looks like 16 millisec.
Please, someone tell me Windows isn't still using the old 18.2 Hz
DOS timer for its system clock. Nooooo....
Andrew.
More information about the core-libs-dev
mailing list