|View Issue Details [ Jump to Notes ] ||[ Issue History ] [ Print ] |
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0005734||OCaml||platform support (windows, cross-compilation, etc)||public||2012-08-19 18:07||2015-12-11 19:08|
|Assigned To|| |
|Product Version||3.12.1|| |
|Target Version||4.01.0+dev||Fixed in Version||4.01.0+dev|| |
|Summary||0005734: Unix.gettimeofday correct resolution under Windows|
|Description||Current implementation of Unix.gettimeofday is not accurate as it is initialised with a time source with a resolution in seconds.|
|Steps To Reproduce||First call to Unix.gettimeofday under Windows always returns a time rounded to the nearest number of seconds.|
|Additional Information||The attached patch uses the Win32 API GetLocalTime (*not* GetSystemTime as the result is used to pass a struct to mktime) which returns the current time to the nearest millisecond. This is used to initialise initial_time in gettimeofday.c|
Patch was made against 3.12.1, but the file is unchanged in trunk. Patch respects m.h's definition of HAS_MKTIME but this is redundant under Windows as it always does have MKTIME.
Note that using GetTickCount means that Unix.gettimeofday never responds to the local clock being corrected *forwards*. For long lived processes this could be a problem? GetTickCount is recommended for measuring elapsed time - shouldn't Unix.gettimeofday always query the local clock?
|Tags||No tags attached.|
|Attached Files|| ocaml-3.12.1-GetTimeOfDay.patch [^] (1,272 bytes) 2012-08-19 18:07 [Show Content]