Boost logo

Boost :

Subject: Re: [boost] [Review] Formal Review of Proposed Boost.Chrono Library Starts TOMORROW
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2010-11-14 05:52:12


----- Original Message -----
From: "joel falcou" <joel.falcou_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Thursday, November 11, 2010 9:25 PM
Subject: Re: [boost] [Review] Formal Review of Proposed Boost.Chrono Library Starts TOMORROW

>
> On 11/11/10 20:40, John Bytheway wrote:
>> Right; I see that. My point was that the implementation of getticks
>> itself has lots of platform-specific code in it, and something
>> equivalent might be usefully added to Boost (but probably not in
>> Boost.Chrono).
>
> Can't boost.Chrono concept wraps aroudn the concept of cycles and
> providde a wrapper around rdtsc adn its ilk ?
> Or is it more a work for StopWatch ?

Sorry for the late response, I missed this post.

As I said in another post it is very simple for the user to define a clock based on whatever cycle count the user can provide:

template <long long speed>
struct cycle_count_clock
{
  typedef typename boost::ratio_multiply<boost::ratio<speed>, boost::mega>::type frequency; // Mhz
  typedef typename boost::ratio_divide<boost::ratio<1>, frequency>::type period;
  typedef long long rep;
  typedef boost::chrono::duration<rep, period> duration;
  typedef boost::chrono::time_point<cycle_count_clock> time_point;
  static time_point now()
  {
    // return exact cycle count
    return time_point(duration(provided_by_the_user::getticks())); // access to clock cycle count
  }
};

Boost.Chrono could provide sych a class, but the getticks() function should be provided by the user. If someone is able to provide a portable getticks() function (I'm myself unable to do it) and include it in Boost, Boost.Chrono will definitely use it to provide this cycle_count_clock.

StopWatch is at high level and builds on top of Boost.Chrono.

Best,
Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk