
Jordans, R. wrote:
Hey all,
I was looking at Boost.Timer and I noticed that it shows different results when it's used in a threaded program on Windows or Unix machines. A closer inspection revealed that it uses clock() to do it's timings.
Digging a bit deeper I found that clock() is specified differently on Windows than it is in my Linux man-page. On windows it counts 'wall clock' time, basically what I'd expect from a class named timer but on Linux it counts CPU time. Thus it will give the result for completely different concepts of time elapsed depending on my system.
Two questions; 1) is there a good way to solve this,
If you want a portable wall-clock timer and a simple Boost.Timer like interface you can just copy the boost/timer.hpp header file into your own namespace and rewrite it to use boost/date_time/posix_time stuff instead of ::clock(). I have done that before and it was really simple. There is a BOOST_ALL_NO_LIB macro you can define before you include the date_time headers so you avoid creating dependencies to anything but the header files in boost. -- Bjorn