31 #include "Utilities/Time/Time.h" 32 #include "Utilities/Logger/Logger.h" 33 #include "Utilities/SingletonHolder/SingletonHolder.h" 53 size_t entriesCount = 0;
58 void WriteJsonHeader();
62 void WriteJsonFooter();
85 void WriteJsonEntry(
const char*
function, TimeStep begin, TimeStep delta);
107 const char*
function;
119 : start(
Time::Current()), function(function), profiler(profiler) { }
127 this->profiler.
WriteJsonEntry(this->
function, this->start, end - start);
148 std::string_view invoker;
155 inline ScopeTimer(std::string_view invoker, std::string_view
function)
156 : start(
Time::Current()), invoker(invoker), function(function.data())
158 Logger::Instance().Debug(this->invoker.data(),
"calling " + this->
function);
168 Logger::Instance().Debug(this->invoker.data(), this->
function +
" finished in " + delta);
173 #define MAKE_SCOPE_PROFILER(function) ScopeProfiler MXENGINE_CONCAT(_profiler, __LINE__)(Profiler::Instance(), function) 175 #define MAKE_SCOPE_TIMER(invoker, function) ScopeTimer MXENGINE_CONCAT(_timer, __LINE__)(invoker, function) Definition: Profiler.h:135
~ScopeProfiler()
Definition: Profiler.h:124
ScopeTimer(std::string_view invoker, std::string_view function)
Definition: Profiler.h:155
void StartSession(const MxString &filename)
Definition: Profiler.cpp:57
MxString BeautifyTime(TimeStep time)
Definition: Time.cpp:51
bool IsValid() const
Definition: Profiler.cpp:47
Definition: SingletonHolder.h:48
static TimeStep Current()
static T & Instance()
Definition: SingletonHolder.h:80
ScopeProfiler(ProfileSession &profiler, const char *function)
Definition: Profiler.h:118
Definition: Profiler.h:98
Definition: Profiler.h:44
void EndSession()
Definition: Profiler.cpp:84
void WriteJsonEntry(const char *function, TimeStep begin, TimeStep delta)
Definition: Profiler.cpp:64
size_t GetEntryCount() const
Definition: Profiler.cpp:52
~ScopeTimer()
Definition: Profiler.h:164
Definition: Application.cpp:49