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 45 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) |
CTimeLogger (CTimeLogger &&o) | |
CTimeLogger & | operator= (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 |
|
protected |
Definition at line 66 of file CTimeLogger.h.
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().
|
virtual |
Default constructor.
Destructor
Definition at line 62 of file CTimeLogger.cpp.
References dumpAllStats(), and m_data.
CTimeLogger::CTimeLogger | ( | const CTimeLogger & | o | ) |
Definition at line 69 of file CTimeLogger.cpp.
CTimeLogger::CTimeLogger | ( | CTimeLogger && | o | ) |
Definition at line 84 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 100 of file CTimeLogger.cpp.
References m_data.
|
inline |
Definition at line 108 of file CTimeLogger.h.
References m_enabled.
Referenced by mrpt::vision::computeHistogramOfOrientations(), mrpt::vision::computeMultiOrientations(), mrpt::vision::computeMultiResolutionDescriptors(), mrpt::vision::interpolateHistEntry(), and mrpt::vision::matchMultiResolutionFeatures().
|
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().
|
protected |
Definition at line 223 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().
Referenced by leave().
void CTimeLogger::dumpAllStats | ( | const size_t | column_width = 80 | ) | const |
Dump all stats through the COutputLogger interface.
Definition at line 208 of file CTimeLogger.cpp.
References getStatsAsText(), and MRPT_LOG_INFO_STREAM.
Referenced by ~CTimeLogger().
|
inline |
Definition at line 107 of file CTimeLogger.h.
References m_enabled.
Referenced by mrpt::detectors::CFaceDetection::CFaceDetection(), mrpt::nav::CAbstractPTGBasedReactive::enableTimeLog(), mrpt::vision::CGenericFeatureTracker::enableTimeLogger(), and mrpt::graphs::ScalarFactorGraph::updateEstimation().
|
inline |
Start of a named section.
Definition at line 117 of file CTimeLogger.h.
References do_enter(), and m_enabled.
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 288 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 280 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 122 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 137 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 109 of file CTimeLogger.h.
References m_enabled.
Referenced by mrpt::nav::CAbstractPTGBasedReactive::build_movement_candidate().
|
inline |
End of a named section.
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().
CTimeLogger & CTimeLogger::operator= | ( | const CTimeLogger & | o | ) |
Definition at line 76 of file CTimeLogger.cpp.
CTimeLogger & CTimeLogger::operator= | ( | CTimeLogger && | o | ) |
Definition at line 91 of file CTimeLogger.cpp.
void CTimeLogger::registerUserMeasure | ( | const char * | event_name, |
const double | value | ||
) |
Definition at line 253 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 192 of file CTimeLogger.cpp.
References mrpt::format(), m_data, and mrpt::utils::CStream::printf().
|
inline |
Definition at line 115 of file CTimeLogger.h.
References m_name.
|
protected |
Definition at line 67 of file CTimeLogger.h.
Referenced by clear(), do_enter(), do_leave(), getLastTime(), getMeanTime(), getStats(), getStatsAsText(), operator=(), registerUserMeasure(), saveToCSVFile(), and ~CTimeLogger().
|
private |
Definition at line 49 of file CTimeLogger.h.
Referenced by disable(), enable(), enter(), isEnabled(), leave(), operator=(), and registerUserMeasure().
|
private |
Definition at line 50 of file CTimeLogger.h.
Referenced by getStatsAsText(), operator=(), and setName().
|
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 |