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();
// Zero all of the frame counts
for (auto& it : m_zones)
{
-#ifndef PROFILER_SILENT
- Debug("Perf: Zone \"%s\" frame: %d ms (%d calls), total: %d ms (%d calls)", it.first.c_str(), it.second.tics_frame * 1000 / SDL_GetPerformanceFrequency(), it.second.calls_frame, it.second.tics_total * 1000 / SDL_GetPerformanceFrequency(), it.second.calls_total);
-#endif
+ if (m_enabled)
+ {
+ printf("perf_zone\t\"%s\"\t%lu %lu\t%lu %lu\n", it.first.c_str(), it.second.tics_frame * 1000 / SDL_GetPerformanceFrequency(), it.second.calls_frame, it.second.tics_total * 1000 / SDL_GetPerformanceFrequency(), it.second.calls_total);
+ }
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;
+ }
}