summaryrefslogtreecommitdiff
path: root/src/profiler.cpp
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2017-05-26 14:03:36 +0200
committerGitHub <noreply@github.com>2017-05-26 14:03:36 +0200
commitd99b6fed5517797bfafe4bbb307963967f0ca749 (patch)
tree0a4ff946a9d8bbcd1e921d3981eec96e988bc5c8 /src/profiler.cpp
parent4d5ce8478c959a4ee5b13ef9ba7e46b28d089a21 (diff)
downloadminetest-d99b6fed5517797bfafe4bbb307963967f0ca749.tar.gz
minetest-d99b6fed5517797bfafe4bbb307963967f0ca749.tar.bz2
minetest-d99b6fed5517797bfafe4bbb307963967f0ca749.zip
Time: Change old `u32` timestamps to 64-bit (#5818)
MacOSX build fix + cleanups
Diffstat (limited to 'src/profiler.cpp')
-rw-r--r--src/profiler.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/profiler.cpp b/src/profiler.cpp
index 197e094f6..8e997442c 100644
--- a/src/profiler.cpp
+++ b/src/profiler.cpp
@@ -21,3 +21,33 @@ with this program; if not, write to the Free Software Foundation, Inc.,
static Profiler main_profiler;
Profiler *g_profiler = &main_profiler;
+ScopeProfiler::ScopeProfiler(
+ Profiler *profiler, const std::string &name, ScopeProfilerType type)
+ : m_profiler(profiler), m_name(name), m_timer(NULL), m_type(type)
+{
+ if (m_profiler)
+ m_timer = new TimeTaker(m_name);
+}
+
+ScopeProfiler::~ScopeProfiler()
+{
+ if (!m_timer)
+ return;
+
+ float duration_ms = m_timer->stop(true);
+ float duration = duration_ms / 1000.0;
+ if (m_profiler) {
+ switch (m_type) {
+ case SPT_ADD:
+ m_profiler->add(m_name, duration);
+ break;
+ case SPT_AVG:
+ m_profiler->avg(m_name, duration);
+ break;
+ case SPT_GRAPH_ADD:
+ m_profiler->graphAdd(m_name, duration);
+ break;
+ }
+ }
+ delete m_timer;
+}