All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Member Functions | Static Public Member Functions | List of all members
hpp::fcl::tools::Profiler Class Reference

This is a simple thread-safe tool for counting time spent in various chunks of code. More...

#include <hpp/fcl/profile.h>

Inheritance diagram for hpp::fcl::tools::Profiler:
[legend]
Collaboration diagram for hpp::fcl::tools::Profiler:
[legend]

Classes

class  ScopedBlock
 This instance will call Profiler::begin() when constructed and Profiler::end() when it goes out of scope. More...
 
class  ScopedStart
 This instance will call Profiler::start() when constructed and Profiler::stop() when it goes out of scope. More...
 

Public Member Functions

 Profiler (bool printOnDestroy=false, bool autoStart=false)
 Constructor. More...
 
 ~Profiler (void)
 Destructor. More...
 
void start (void)
 Start counting time. More...
 
void stop (void)
 Stop counting time. More...
 
void clear (void)
 Clear counted time and events. More...
 
void event (const std::string &name, const unsigned int times=1)
 Count a specific event for a number of times. More...
 
void average (const std::string &name, const double value)
 Maintain the average of a specific value. More...
 
void begin (const std::string &name)
 Begin counting time for a specific chunk of code. More...
 
void end (const std::string &name)
 Stop counting time for a specific chunk of code. More...
 
void status (std::ostream &out=std::cout, bool merge=true)
 Print the status of the profiled code chunks and events. More...
 
bool running (void) const
 Check if the profiler is counting time or not. More...
 

Static Public Member Functions

static ProfilerInstance (void)
 Return an instance of the class. More...
 
static void Start (void)
 Start counting time. More...
 
static void Stop (void)
 Stop counting time. More...
 
static void Clear (void)
 Clear counted time and events. More...
 
static void Event (const std::string &name, const unsigned int times=1)
 Count a specific event for a number of times. More...
 
static void Average (const std::string &name, const double value)
 Maintain the average of a specific value. More...
 
static void Begin (const std::string &name)
 Begin counting time for a specific chunk of code. More...
 
static void End (const std::string &name)
 Stop counting time for a specific chunk of code. More...
 
static void Status (std::ostream &out=std::cout, bool merge=true)
 Print the status of the profiled code chunks and events. More...
 
static bool Running (void)
 Check if the profiler is counting time or not. More...
 

Detailed Description

This is a simple thread-safe tool for counting time spent in various chunks of code.

This is different from external profiling tools in that it allows the user to count time spent in various bits of code (sub-function granularity) or count how many times certain pieces of code are executed.

Constructor & Destructor Documentation

hpp::fcl::tools::Profiler::Profiler ( bool  printOnDestroy = false,
bool  autoStart = false 
)
inline

Constructor.

It is allowed to separately instantiate this class (not only as a singleton)

References start().

hpp::fcl::tools::Profiler::~Profiler ( void  )
inline

Destructor.

References status().

Member Function Documentation

static void hpp::fcl::tools::Profiler::Average ( const std::string &  name,
const double  value 
)
inlinestatic

Maintain the average of a specific value.

References average(), and Instance().

void hpp::fcl::tools::Profiler::average ( const std::string &  name,
const double  value 
)

Maintain the average of a specific value.

Referenced by Average().

static void hpp::fcl::tools::Profiler::Begin ( const std::string &  name)
inlinestatic

Begin counting time for a specific chunk of code.

References begin(), and Instance().

void hpp::fcl::tools::Profiler::begin ( const std::string &  name)

Begin counting time for a specific chunk of code.

Referenced by Begin(), and hpp::fcl::tools::Profiler::ScopedBlock::ScopedBlock().

static void hpp::fcl::tools::Profiler::Clear ( void  )
inlinestatic

Clear counted time and events.

References clear(), and Instance().

void hpp::fcl::tools::Profiler::clear ( void  )

Clear counted time and events.

Referenced by Clear().

static void hpp::fcl::tools::Profiler::End ( const std::string &  name)
inlinestatic

Stop counting time for a specific chunk of code.

References end(), and Instance().

void hpp::fcl::tools::Profiler::end ( const std::string &  name)

Stop counting time for a specific chunk of code.

Referenced by End(), and hpp::fcl::tools::Profiler::ScopedBlock::~ScopedBlock().

static void hpp::fcl::tools::Profiler::Event ( const std::string &  name,
const unsigned int  times = 1 
)
inlinestatic

Count a specific event for a number of times.

References event(), and Instance().

void hpp::fcl::tools::Profiler::event ( const std::string &  name,
const unsigned int  times = 1 
)

Count a specific event for a number of times.

Referenced by Event().

static Profiler& hpp::fcl::tools::Profiler::Instance ( void  )
static

Return an instance of the class.

Referenced by Average(), Begin(), Clear(), End(), Event(), Running(), Start(), Status(), and Stop().

bool hpp::fcl::tools::Profiler::running ( void  ) const
inline

Check if the profiler is counting time or not.

Referenced by Running().

static bool hpp::fcl::tools::Profiler::Running ( void  )
inlinestatic

Check if the profiler is counting time or not.

References Instance(), and running().

static void hpp::fcl::tools::Profiler::Start ( void  )
inlinestatic

Start counting time.

References Instance(), and start().

void hpp::fcl::tools::Profiler::start ( void  )
static void hpp::fcl::tools::Profiler::Status ( std::ostream &  out = std::cout,
bool  merge = true 
)
inlinestatic

Print the status of the profiled code chunks and events.

Optionally, computation done by different threads can be printed separately.

References Instance(), and status().

void hpp::fcl::tools::Profiler::status ( std::ostream &  out = std::cout,
bool  merge = true 
)

Print the status of the profiled code chunks and events.

Optionally, computation done by different threads can be printed separately.

Referenced by Status(), and ~Profiler().

static void hpp::fcl::tools::Profiler::Stop ( void  )
inlinestatic

Stop counting time.

References Instance(), and stop().

void hpp::fcl::tools::Profiler::stop ( void  )

Stop counting time.

Referenced by Stop(), and hpp::fcl::tools::Profiler::ScopedStart::~ScopedStart().