|
Boost : |
Subject: Re: [boost] [Timer] Inconsistent behaviour
From: Beman Dawes (bdawes_at_[hidden])
Date: 2008-10-29 18:07:10
On Wed, Oct 29, 2008 at 3:15 PM, Bjørn Roald <bjorn_at_[hidden]> wrote:
> 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.
I've got a much better timer with uniform behavior across Windows and POSIX.
But I've been holding off submitting it until the C++0x date-time interfaces
froze. That has now happened, and Howard Hinnant has made his proof of
concept implementation available under the Boost license to use as a
starting point for a Boost implementation. Maybe I can get something good
enough to be useful together sometime in November.
--Beman
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk