|
Boost : |
From: christopher diggins (cdiggins_at_[hidden])
Date: 2005-02-12 10:25:30
----- Original Message -----
From: "Caleb Epstein" <caleb.epstein_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Friday, February 11, 2005 10:52 PM
Subject: Re: [boost] Re: Re: Profiling Library suggestion
> Here's a use case that I had trouble getting to work with the current
> profiler implementation.
>
> I have some code that is benchmarking a relatively fast routine. I
> was using boost::timer and keeping track of the number of calls I
> could do before the timer reached some reasonable value (say 5
> seconds). I then report the number of calls/sec I can make by
> dividing these values.
>
> I had difficulty converting this to use the profiler code because of
> the small run-time of the routine. Using a timer inside my for loop
> just resulted in timer underflows. I think what I'm looking for is a
> way to bump the "count" portion of the counted_sum for a profiler
> without stopping it.
I have added temporarily (at
http://www.cdiggins.com/profiler/v2/profiler.hpp):
public:
// extra functionality, may or may not stay in
duration_type& recorded_elapsed() {
return policy_t::stats[id].first;
}
int& recorded_count() {
return policy_t::stats[id].second;
}
const duration_type& recorded_elapsed() const {
return policy_t::stats[id].first;
}
const int& recorded_count() const {
return policy_t::stats[id].second;
}
const duration_type& elapsed_so_far() const {
return elapsed;
}
We can't leave the implementation of recorded_elapsed() and recorded_count()
as is, because it IMO makes too many assumptions about the stats layout. I
will need to find a better way to do this. This exposure of implementation
details of a policy feels like a bad idea. I would prefer instead perhaps to
do this:
public:
policy_t& get_stats_policy() { }
And write a separate exposed_stats_policy, which exposes its implementation.
This at least would allow implementation hiding to be a default behaviour.
Any other suggestions on how to do this would be welcome.
Christopher Diggins
Object Oriented Template Library (OOTL)
http://www.ootl.org
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk