Main MRPT website > C++ reference for MRPT 1.9.9
List of all members | Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Attributes
mrpt::utils::CTimeLogger Class Reference

Detailed Description

A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X), among other stats.

The results can be dumped to cout or to Visual Studio's output panel. Recursive methods are supported with no problems, that is, calling "enter(X) enter(X) ... leave(X) leave(X)". enter()/leave() are thread-safe.

This class can be also used to monitorize min/mean/max/total stats of any user-provided parameters via the method CTimeLogger::registerUserMeasure()

Cost of the profiler itself (measured on MSVC2015, Windows 10, Intel i5-2310 2.9GHz):

See also
CTimeLoggerEntry
Note
The default behavior is dumping all the information at destruction.

Definition at line 45 of file CTimeLogger.h.

#include <mrpt/utils/CTimeLogger.h>

Inheritance diagram for mrpt::utils::CTimeLogger:
Inheritance graph

Classes

struct  TCallData
 Data of all the calls: More...
 
struct  TCallStats
 Data of each call section: # of calls, minimum, maximum, average and overall execution time (in seconds) More...
 

Public Member Functions

 CTimeLogger (bool enabled=true, const std::string &name="")
 
virtual ~CTimeLogger ()
 Default constructor. More...
 
 CTimeLogger (const CTimeLogger &o)
 
CTimeLoggeroperator= (const CTimeLogger &o)
 
 CTimeLogger (CTimeLogger &&o)
 
CTimeLoggeroperator= (CTimeLogger &&o)
 
std::string getStatsAsText (const size_t column_width=80) const
 Dump all stats to a multi-line text string. More...
 
void getStats (std::map< std::string, TCallStats > &out_stats) const
 Returns all the current stats as a map: section_name => stats. More...
 
void dumpAllStats (const size_t column_width=80) const
 Dump all stats through the COutputLogger interface. More...
 
void clear (bool deep_clear=false)
 Resets all stats. More...
 
void enable (bool enabled=true)
 
void disable ()
 
bool isEnabled () const
 
void saveToCSVFile (const std::string &csv_file) const
 Dump all stats to a Comma Separated Values (CSV) file. More...
 
void registerUserMeasure (const char *event_name, const double value)
 
void setName (const std::string &name)
 
void enter (const char *func_name)
 Start of a named section. More...
 
double leave (const char *func_name)
 End of a named section. More...
 
double getMeanTime (const std::string &name) const
 Return the mean execution time of the given "section", or 0 if it hasn't ever been called "enter" with that section name. More...
 
double getLastTime (const std::string &name) const
 Return the last execution time of the given "section", or 0 if it hasn't ever been called "enter" with that section name. More...
 

Protected Types

typedef mrpt::utils::ts_hash_map< std::string, TCallData, 1, 10 > TDataMap
 

Protected Member Functions

void do_enter (const char *func_name)
 
double do_leave (const char *func_name)
 

Protected Attributes

TDataMap m_data
 

Private Attributes

CTicTac m_tictac
 
bool m_enabled
 
std::string m_name
 

Member Typedef Documentation

◆ TDataMap

Definition at line 66 of file CTimeLogger.h.

Constructor & Destructor Documentation

◆ CTimeLogger() [1/3]

CTimeLogger::CTimeLogger ( bool  enabled = true,
const std::string name = "" 
)

Definition at line 55 of file CTimeLogger.cpp.

References m_tictac, and mrpt::utils::CTicTac::Tic().

Here is the call graph for this function:

◆ ~CTimeLogger()

CTimeLogger::~CTimeLogger ( )
virtual

Default constructor.

Destructor

Definition at line 62 of file CTimeLogger.cpp.

References dumpAllStats(), and m_data.

Here is the call graph for this function:

◆ CTimeLogger() [2/3]

CTimeLogger::CTimeLogger ( const CTimeLogger o)

Definition at line 69 of file CTimeLogger.cpp.

◆ CTimeLogger() [3/3]

CTimeLogger::CTimeLogger ( CTimeLogger &&  o)

Definition at line 84 of file CTimeLogger.cpp.

Member Function Documentation

◆ clear()

void CTimeLogger::clear ( bool  deep_clear = false)

Resets all stats.

By default (deep_clear=false), all section names are remembered (not freed) so the cost of creating upon the first next call is avoided.

Definition at line 100 of file CTimeLogger.cpp.

References m_data.

◆ disable()

void mrpt::utils::CTimeLogger::disable ( )
inline

◆ do_enter()

void CTimeLogger::do_enter ( const char *  func_name)
protected

Definition at line 213 of file CTimeLogger.cpp.

References m_data, m_tictac, mrpt::utils::CTimeLogger::TCallData::n_calls, mrpt::utils::CTimeLogger::TCallData::open_calls, and mrpt::utils::CTicTac::Tac().

Referenced by enter().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_leave()

double CTimeLogger::do_leave ( const char *  func_name)
protected

◆ dumpAllStats()

void CTimeLogger::dumpAllStats ( const size_t  column_width = 80) const

Dump all stats through the COutputLogger interface.

See also
getStatsAsText, saveToCVSFile

Definition at line 208 of file CTimeLogger.cpp.

References getStatsAsText(), and MRPT_LOG_INFO_STREAM.

Referenced by ~CTimeLogger().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable()

void mrpt::utils::CTimeLogger::enable ( bool  enabled = true)
inline

◆ enter()

void mrpt::utils::CTimeLogger::enter ( const char *  func_name)
inline

◆ getLastTime()

double CTimeLogger::getLastTime ( const std::string name) const

Return the last execution time of the given "section", or 0 if it hasn't ever been called "enter" with that section name.

Definition at line 288 of file CTimeLogger.cpp.

References m_data.

Referenced by mrpt::nav::CAbstractPTGBasedReactive::performNavigationStep(), and mrpt::nav::CAbstractPTGBasedReactive::STEP8_GenerateLogRecord().

Here is the caller graph for this function:

◆ getMeanTime()

double CTimeLogger::getMeanTime ( const std::string name) const

Return the mean execution time of the given "section", or 0 if it hasn't ever been called "enter" with that section name.

Definition at line 280 of file CTimeLogger.cpp.

References m_data.

◆ getStats()

void CTimeLogger::getStats ( std::map< std::string, TCallStats > &  out_stats) const

◆ getStatsAsText()

std::string CTimeLogger::getStatsAsText ( const size_t  column_width = 80) const

◆ isEnabled()

bool mrpt::utils::CTimeLogger::isEnabled ( ) const
inline

Definition at line 109 of file CTimeLogger.h.

References m_enabled.

Referenced by mrpt::nav::CAbstractPTGBasedReactive::build_movement_candidate().

Here is the caller graph for this function:

◆ leave()

double mrpt::utils::CTimeLogger::leave ( const char *  func_name)
inline

End of a named section.

Returns
The ellapsed time, in seconds or 0 if disabled.
See also
enter

Definition at line 123 of file CTimeLogger.h.

References do_leave(), and m_enabled.

Referenced by mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::_optimizeGraph(), mrpt::vision::bundle_adj_full(), mrpt::utils::CImage::changeSize(), mrpt::detectors::CFaceDetection::checkIfDiagonalSurface(), mrpt::detectors::CFaceDetection::checkIfDiagonalSurface2(), mrpt::detectors::CFaceDetection::checkIfFacePlaneCov(), mrpt::detectors::CFaceDetection::checkIfFaceRegions(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition2D(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition3D(), mrpt::detectors::CFaceDetection::detectObjects_Impl(), mrpt::mrpt::utils::global_profiler_leave(), mrpt::nav::CReactiveNavigationSystem3D::implementSenseObstacles(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::initializeVisuals(), mrpt::opengl::CTexturedObject::loadTextureInOpenGL(), mrpt::graphslam::optimize_graph_spa_levmarq(), mrpt::tfest::se2_l2_robust(), mrpt::nav::CAbstractPTGBasedReactive::STEP8_GenerateLogRecord(), mrpt::graphs::ScalarFactorGraph::updateEstimation(), mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::updateState(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateVisuals(), and mrpt::utils::CTimeLoggerEntry::~CTimeLoggerEntry().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=() [1/2]

CTimeLogger & CTimeLogger::operator= ( const CTimeLogger o)

Definition at line 76 of file CTimeLogger.cpp.

References m_data, m_enabled, and m_name.

◆ operator=() [2/2]

CTimeLogger & CTimeLogger::operator= ( CTimeLogger &&  o)

Definition at line 91 of file CTimeLogger.cpp.

References m_data, m_enabled, and m_name.

◆ registerUserMeasure()

void CTimeLogger::registerUserMeasure ( const char *  event_name,
const double  value 
)

◆ saveToCSVFile()

void CTimeLogger::saveToCSVFile ( const std::string csv_file) const

Dump all stats to a Comma Separated Values (CSV) file.

See also
dumpAllStats

Definition at line 192 of file CTimeLogger.cpp.

References mrpt::format(), m_data, and mrpt::utils::CStream::printf().

Here is the call graph for this function:

◆ setName()

void mrpt::utils::CTimeLogger::setName ( const std::string name)
inline

Definition at line 115 of file CTimeLogger.h.

References m_name.

Member Data Documentation

◆ m_data

TDataMap mrpt::utils::CTimeLogger::m_data
protected

◆ m_enabled

bool mrpt::utils::CTimeLogger::m_enabled
private

Definition at line 49 of file CTimeLogger.h.

Referenced by disable(), enable(), enter(), isEnabled(), leave(), operator=(), and registerUserMeasure().

◆ m_name

std::string mrpt::utils::CTimeLogger::m_name
private

Definition at line 50 of file CTimeLogger.h.

Referenced by getStatsAsText(), operator=(), and setName().

◆ m_tictac

CTicTac mrpt::utils::CTimeLogger::m_tictac
private

Definition at line 48 of file CTimeLogger.h.

Referenced by CTimeLogger(), do_enter(), and do_leave().




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019