diff --git a/libraries/shared/src/PerfStat.cpp b/libraries/shared/src/PerfStat.cpp index 2c3dcf93b7..85e96ea4db 100644 --- a/libraries/shared/src/PerfStat.cpp +++ b/libraries/shared/src/PerfStat.cpp @@ -103,3 +103,28 @@ int PerfStat::DumpStats(char** array) { return lineCount; } + +// Constructor handles starting the warning timer +PerformanceWarning::PerformanceWarning(bool renderWarnings, const char* message) { + _start = usecTimestampNow(); + _message = message; + _renderWarningsOn = renderWarnings; + // need to also store the args... +} + +// Destructor handles recording all of our stats +PerformanceWarning::~PerformanceWarning() { + double end = usecTimestampNow(); + double elapsedmsec = (end - _start)/1000.0; + if (_renderWarningsOn && elapsedmsec > 1) { + if (elapsedmsec > 1000) { + double elapsedsec = (end - _start)/1000000.0; + printLog("WARNING! %s took %lf seconds\n", _message, elapsedsec); + } else { + printLog("WARNING! %s took %lf milliseconds\n", _message, elapsedmsec); + } + } + +}; + + diff --git a/libraries/shared/src/PerfStat.h b/libraries/shared/src/PerfStat.h index 1ccde5c28c..f52a3ec49c 100644 --- a/libraries/shared/src/PerfStat.h +++ b/libraries/shared/src/PerfStat.h @@ -13,6 +13,7 @@ #define __hifi__PerfStat__ #include +#include "SharedUtil.h" #ifdef _WIN32 #define snprintf _snprintf @@ -81,5 +82,15 @@ public: typedef std::map >::iterator PerfStatMapItr; +class PerformanceWarning { +private: + double _start; + const char* _message; + bool _renderWarningsOn; +public: + PerformanceWarning(bool renderWarnings, const char* message); + ~PerformanceWarning(); +}; + #endif /* defined(__hifi__PerfStat__) */