At Thursday 2004-05-06 00:46, you wrote:
I have prototype implementations for a few simple Windows clocks I have in mind in works. I'll post when I get a chance to finish something.
In the meantime, perhaps this might be interesting to someone. I wrote this two days ago to assess the capabilities of the clocks on Windows to determine what might be the most suitable as a time source. It outputs a combination of hardcoded information about the documented capabilities of clocks, plus information it has determined real-time about the capabilities of clocks from the OS. It should be standard C++ with documented Windows extensions. I tested on GCC, but it would probably work for any Windows compiler with little or no modifications. The rdtsc support will only work on GCC, though.
I try to build it on my system vs.net2003 and I get the following (the warnings aren't the problem, the missing symbols are): ------ Build started: Project: PossibleClockEnhancements, Configuration: Release Win32 ------ Compiling... PossibleClockEnhancements.cpp PossibleClockEnhancements.cpp(400) : warning C4244: 'initializing' : conversion from 'ULONGLONG' to 'long double', possible loss of data PossibleClockEnhancements.cpp(452) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> get_precision<systemtime_timer>(void)' being compiled with [ _Ty1=long double, _Ty2=long double ] PossibleClockEnhancements.cpp(400) : warning C4244: 'initializing' : conversion from 'ULONGLONG' to 'long double', possible loss of data PossibleClockEnhancements.cpp(459) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> get_precision<systemtimeaft_timer>(void)' being compiled with [ _Ty1=long double, _Ty2=long double ] PossibleClockEnhancements.cpp(400) : warning C4244: 'initializing' : conversion from 'LONGLONG' to 'long double', possible loss of data PossibleClockEnhancements.cpp(485) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> get_precision<queryperformance_timer>(void)' being compiled with [ _Ty1=long double, _Ty2=long double ] Linking... PossibleClockEnhancements.obj : error LNK2019: unresolved external symbol __imp__timeGetTime@0 referenced in function "public: static void __cdecl gettickcount_timer::warm(void)" (?warm@gettickcount_timer@@SAXXZ) PossibleClockEnhancements.obj : error LNK2019: unresolved external symbol __imp__timeBeginPeriod@4 referenced in function "public: static void __cdecl timegettime_timer::warm(void)" (?warm@timegettime_timer@@SAXXZ) Release/PossibleClockEnhancements.exe : fatal error LNK1120: 2 unresolved externals Build log was saved at "file://c:\Projects\Programming\Kokopelli Technology\boost_testing\PossibleClockEnhancements\Release\BuildLog.htm" PossibleClockEnhancements - 3 error(s), 3 warning(s) ---------------------- Done ---------------------- Build: 0 succeeded, 1 failed, 0 skipped [deleted] Victor A. Wagner Jr. http://rudbek.com The five most dangerous words in the English language: "There oughta be a law"