David's final changes: more profiler features, fixes.
[ipdf/code.git] / src / profiler.cpp
index f718637..13595af 100644 (file)
@@ -15,6 +15,14 @@ void Profiler::BeginZone(std::string name)
        m_zone_stack.push(name);
 }
 
+void Profiler::AddCounter(std::string name, uint64_t amt)
+{
+       if (!m_counters.count(name))
+               m_counters[name] = amt;
+       else
+               m_counters[name] += amt;
+}
+
 void Profiler::EndZone()
 {
        std::string name = m_zone_stack.top();
@@ -38,4 +46,13 @@ void Profiler::EndFrame()
                it.second.tics_frame = 0;
                it.second.calls_frame = 0;
        }
+
+       for (auto& it : m_counters)
+       {
+               if (m_enabled)
+               {
+                       printf("perf_counter\t\"%s\"\t%lu\n", it.first.c_str(), it.second);
+               }
+               it.second = 0;
+       }
 }

UCC git Repository :: git.ucc.asn.au