Code modernization: src/m* (part 2)
[oweals/minetest.git] / src / profiler.cpp
index 197e094f65a5a0d7bb024d2539c021db6ae820dd..738a5b7e3957e9f3e3215ebc8f6fb8c1d0b972b7 100644 (file)
@@ -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_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;
+}