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):
Definition at line 41 of file CTimeLogger.h.
#include <mrpt/utils/CTimeLogger.h>
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) | |
CTimeLogger & | operator= (const 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. By default (deep_clear=false), all section names are remembered (not freed) so the cost of creating upon the first next call is avoided. 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 |
|
protected |
Definition at line 59 of file CTimeLogger.h.
CTimeLogger::CTimeLogger | ( | bool | enabled = true , |
const std::string & | name = "" |
||
) |
Definition at line 57 of file CTimeLogger.cpp.
References m_tictac, and mrpt::utils::CTicTac::Tic().
|
virtual |
Default constructor.
Destructor
Definition at line 66 of file CTimeLogger.cpp.
References dumpAllStats(), and m_data.
CTimeLogger::CTimeLogger | ( | const CTimeLogger & | o | ) |
Definition at line 73 of file CTimeLogger.cpp.
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 107 of file CTimeLogger.cpp.
References m_data.
|
inline |
|
protected |
Definition at line 217 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().
|
protected |
Definition at line 227 of file CTimeLogger.cpp.
References mrpt::mrpt::utils::keep_max(), mrpt::mrpt::utils::keep_min(), mrpt::utils::CTimeLogger::TCallData::last_t, m_data, m_tictac, mrpt::utils::CTimeLogger::TCallData::max_t, mrpt::utils::CTimeLogger::TCallData::mean_t, mrpt::utils::CTimeLogger::TCallData::min_t, mrpt::utils::CTimeLogger::TCallData::n_calls, mrpt::utils::CTimeLogger::TCallData::open_calls, and mrpt::utils::CTicTac::Tac().
void CTimeLogger::dumpAllStats | ( | const size_t | column_width = 80 | ) | const |
Dump all stats through the COutputLogger interface.
Definition at line 212 of file CTimeLogger.cpp.
References getStatsAsText(), and MRPT_LOG_INFO_STREAM.
Referenced by ~CTimeLogger().
|
inline |
Definition at line 88 of file CTimeLogger.h.
Referenced by mrpt::detectors::CFaceDetection::CFaceDetection(), and mrpt::graphs::ScalarFactorGraph::updateEstimation().
|
inline |
Start of a named section.
Definition at line 97 of file CTimeLogger.h.
Referenced by mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::_optimizeGraph(), mrpt::bayes::detail::addNewLandmarks(), 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::utils::CTimeLoggerEntry::CTimeLoggerEntry(), mrpt::detectors::CFaceDetection::detectObjects_Impl(), mrpt::mrpt::utils::global_profiler_enter(), 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(), and mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateVisuals().
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 294 of file CTimeLogger.cpp.
References m_data.
Referenced by mrpt::nav::CAbstractPTGBasedReactive::performNavigationStep(), and mrpt::nav::CAbstractPTGBasedReactive::STEP8_GenerateLogRecord().
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 287 of file CTimeLogger.cpp.
References m_data.
void CTimeLogger::getStats | ( | std::map< std::string, TCallStats > & | out_stats | ) | const |
Returns all the current stats as a map: section_name => stats.
Definition at line 131 of file CTimeLogger.cpp.
References mrpt::utils::CTimeLogger::TCallStats::last_t, m_data, mrpt::utils::CTimeLogger::TCallStats::max_t, mrpt::utils::CTimeLogger::TCallStats::mean_t, mrpt::utils::CTimeLogger::TCallStats::min_t, mrpt::utils::CTimeLogger::TCallStats::n_calls, and mrpt::utils::CTimeLogger::TCallStats::total_t.
std::string CTimeLogger::getStatsAsText | ( | const size_t | column_width = 80 | ) | const |
Dump all stats to a multi-line text string.
Definition at line 146 of file CTimeLogger.cpp.
References aux_format_string_multilines(), mrpt::format(), m_data, m_name, and mrpt::system::unitsFormat().
Referenced by dumpAllStats(), mrpt::detectors::CFaceDetection::experimental_showMeasurements(), mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::getDescriptiveReport(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::getDescriptiveReport(), and mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::getDescriptiveReport().
|
inline |
Definition at line 90 of file CTimeLogger.h.
Referenced by mrpt::nav::CAbstractPTGBasedReactive::build_movement_candidate().
|
inline |
End of a named section.
Definition at line 102 of file CTimeLogger.h.
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().
CTimeLogger & CTimeLogger::operator= | ( | const CTimeLogger & | o | ) |
Definition at line 80 of file CTimeLogger.cpp.
void CTimeLogger::registerUserMeasure | ( | const char * | event_name, |
const double | value | ||
) |
Definition at line 256 of file CTimeLogger.cpp.
References mrpt::utils::CTimeLogger::TCallData::has_time_units, mrpt::mrpt::utils::keep_max(), mrpt::mrpt::utils::keep_min(), mrpt::utils::CTimeLogger::TCallData::last_t, m_data, m_enabled, mrpt::utils::CTimeLogger::TCallData::max_t, mrpt::utils::CTimeLogger::TCallData::mean_t, mrpt::utils::CTimeLogger::TCallData::min_t, and mrpt::utils::CTimeLogger::TCallData::n_calls.
Referenced by mrpt::nav::CAbstractPTGBasedReactive::build_movement_candidate().
void CTimeLogger::saveToCSVFile | ( | const std::string & | csv_file | ) | const |
Dump all stats to a Comma Separated Values (CSV) file.
Definition at line 194 of file CTimeLogger.cpp.
References mrpt::format(), m_data, and mrpt::utils::CStream::printf().
|
inline |
Definition at line 94 of file CTimeLogger.h.
|
protected |
Definition at line 60 of file CTimeLogger.h.
Referenced by clear(), do_enter(), do_leave(), getLastTime(), getMeanTime(), getStats(), getStatsAsText(), operator=(), registerUserMeasure(), saveToCSVFile(), and ~CTimeLogger().
|
private |
Definition at line 45 of file CTimeLogger.h.
Referenced by operator=(), and registerUserMeasure().
|
private |
Definition at line 46 of file CTimeLogger.h.
Referenced by getStatsAsText(), and operator=().
|
private |
Definition at line 44 of file CTimeLogger.h.
Referenced by CTimeLogger(), do_enter(), and do_leave().
Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |