Boost logo

Boost :

From: christopher diggins (cdiggins_at_[hidden])
Date: 2005-02-05 16:35:52


Sorry in advance for heavy editing of the email.

----- Original Message -----
From: "Preston A. Elder" <prez_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Saturday, February 05, 2005 3:24 AM
Subject: [boost] Re: Profiling Library suggestion

> Problem is, usually a profiler is used to tell you both how many calls are
> made to a function, how long they took cumulatively, and an average.

Good point.

> Alternatively, you could have begin/end sections to profile multiple
> operations:
> void MyFunc()
> {
> static ProfileCollection pc;
> StartProfileOp(pc, op1);
> op1();
> EndProfileOp(pc, op1);
> StartProfileOp(pc, op2);
> op1();
> EndProfileOp(pc, op2);
> StartProfileOp(pc, op3);
> op1();
> EndProfileOp(pc, op3);
> EndProfile(pc);
> }
> This would allow multiple operations to be profiled as one group (the
> second parameter of StartProfileOp and EndProfileOp being just an
> identifier, meaning they'd have to be macros).

How about:

  basic_profiler<custom_collecting_policy> p("op1")
  basic_profiler<custom_collecting_policy> p("op2")
  basic_profiler<custom_collecting_policy> p("op3")


And if you like macros, you could always write out:

#define PROFILE(TKN0) { basic_profiler<custom_collecting_policy>
profiler_(#TKN); TKN0(); }


> Also, btw, one of the biggest things would be the ability to DISABLE it
> all, whether by policy or whatever. The last thing I want is to have all
> this timer code active when I'm compiling a production release and not
> trying to tune the code.

Yes definitely, I agree.

> Anyway, if you're looking at a library for this purpose, thats my $.02c :)

Thanks for your contributions.

Christopher Diggins
Object Oriented Template Library (OOTL)

Boost list run by bdawes at, gregod at, cpdaniel at, john at