
Hi, Boost.Chrono provide already this functionality with its new feature Stopwatch. See http://old.nabble.com/-chrono--v0.3--New-Stopwatch-Feature-tt27202338.html. Stopwatch is a an generic feature that allows the user to trace all you trace and more expect your "Average T between calls". stopclock<> provides a run time reporting package that can be invoked in a single line of code to report the usage of a Clock. stopclock_accumulator<> associates an accumulator with a stopwatch, so we are able to retrieve any statistical feature Boost.Accumulator provides. For example: . ******** START OF FILE ******** #include <boost/stopwatches.h> #include <cmath> #define TRACE_LIFETIME \ static boost::chrono::stopclock_accumulator<> acc(BOOST_CHRONO_ACCUMULATOR_FUNCTION_FORMAT); \ boost::chrono::stopclock_accumulator<>::scoped_run _(acc); int f1(long j) { TRACE_LIFETIME; for ( long i = 0; i < j; ++i ) std::sqrt( 123.456L ); // burn some time return 0; } int main() { TRACE_LIFETIME; f1(100000); f1(200000); f1(300000); return 0; } ******** END OF FILE ******** produce the output int f1(long int) : 3 times, sum=0.031s, min=0.006s, max=0.013s, mean=0.010s int main() : 1 times, sum=0.031s, min=0.031s, max=0.031s, mean=0.031s I'm interesteed in seen your code, could you upload it somewhere? Any comments on the Stopwatch part of the Chrono library is welcome. Best, Vicente ----- Original Message ----- From: "Andrew Chinkoff" <achinkoff@gmail.com> To: <boost@lists.boost.org> Sent: Wednesday, January 20, 2010 12:47 AM Subject: [boost] [Boost.tracer] library request
[Boost.tracer] library request is founded on a desire to trace some statistics about program execution.
The sample program below demonstrates these statistics.
Sample program file:
******** START OF FILE ******** #include <tracer.h> void foo() { TRACE_LIFETIME; usleep(rand() % 100000); } int main() { TRACE_LIFETIME; for(int i = 0; i < 100; ++i) foo(); } ******** END OF FILE ********
Produced log file:
******** START OF FILE ******** All the program time: 05265686 us (micro secs)
TRACE POINT: Function: int main() Calls: 0000000001 times Average T between calls: 0000000000 us Average life T: 0005264459 us File: main.cpp Line: 00000009
TRACE POINT: Function: void foo() Calls: 0000000100 times Average T between calls: 0000051665 us Average life T: 0000052606 us File: main.cpp Line: 00000004 ******** END OF FILE ********
Comment:
TRACE_LIFETIME is a MACRO that traces some scope statistics, namely: "Function" - the function name where the scope is; "Calls" - number of entries into this scope; "Average T between calls" - average time period between "Calls"; "Average life T" - average time spent in this scope.
Conclusion:
I think it is reasonable to introduce this trace functionality into (for example) boost::tracer namespace. I had wrote tracer.h and tracer.cpp source files and I wish Boost community to consider them.
Thank You. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost