getUTCtime() increases irregularly
Frits van Bommel
fvbommel at REMwOVExCAPSs.nl
Wed Apr 4 06:56:09 PDT 2007
david wrote:
> I was just playing with a slow down class, when I noticed
> getUTCtime() from std.date works a bit unexpected:
>
> import std.stdio;
> import std.date : getUTCtime;
>
> int main(char[][] args)
> {
> for (int i=0;i<500;i++)
> writefln(getUTCtime());
> return 0;
> }
>
> results in (shortened version, for obvious reasons):
>
[snip]
>
> So, it increases as well in large increments
> and also in irregular ones, namely
> 15 and 16 milliseconds.
>
> Since I found nothing in the phobos docs,
> how can I access the current time at a more
> precise level?
The precision of the clock is operating-system dependent AFAIK.
(including the version of the OS and obviously the type of machine it's
running on)
D can't make it more accurate than the OS is willing to provide :(.
(Your post header indicates you're running Windows)
On Windows, there are (at least) two functions to get the current time:
one returns it as a SYSTEMTIME structure, one as a FILETIME structure.
It looks like std.date uses GetSystemTime; you could try to see if
GetFileTime is more accurate. (no idea why it would be, but you could
try...)
Try this:
---
import std.c.windows.windows : GetSystemTimeAsFileTime, FILETIME;
import std.date;
d_time currentFileTime() {
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
return std.date.FILETIME2D_time(ft);
}
---
(Coded with no access to a Windows computer, so completely untested. I
just had the std.date source and pages referenced from
http://msdn2.microsoft.com/en-us/library/ms725479.aspx to work with)
More information about the Digitalmars-d-learn
mailing list