diff options
Diffstat (limited to 'src/zen/trace/trace_analyze.cpp')
| -rw-r--r-- | src/zen/trace/trace_analyze.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/zen/trace/trace_analyze.cpp b/src/zen/trace/trace_analyze.cpp index ff168cd9c..3538c074d 100644 --- a/src/zen/trace/trace_analyze.cpp +++ b/src/zen/trace/trace_analyze.cpp @@ -174,6 +174,7 @@ public: AppendThreads(); AppendChannels(); AppendCpuScopeStats(); + AppendCounters(); AppendMemorySummary(); AppendLiveAllocationCallstacks(); AppendChurnCallstacks(); @@ -336,6 +337,59 @@ private: ZEN_CONSOLE(""); } + void AppendCounters() const + { + if (m_Model.CounterDefs.empty() && m_Model.CounterTimeSeries.empty()) + { + return; + } + + ZEN_CONSOLE("Counters:"); + ZEN_CONSOLE(""); + ZEN_CONSOLE("{:<48} {:>5} {:>10} {:>14} {:>14} {:>10}", "Counter", "Type", "Samples", "Min", "Max", "Last"); + ZEN_CONSOLE("{:-<{}}", "", 48 + 5 + 10 + 14 + 14 + 10 + 5); + + eastl::hash_map<uint16_t, const TraceModel::CounterSeries*> SeriesById; + SeriesById.reserve(m_Model.CounterTimeSeries.size()); + for (const TraceModel::CounterSeries& S : m_Model.CounterTimeSeries) + { + SeriesById[S.Id] = &S; + } + + auto FormatValue = [](double Value, uint8_t DisplayHint, uint8_t Type) -> std::string { + if (DisplayHint == 1 /* Memory */) + { + return fmt::format("{}", zen::NiceBytes(uint64_t(Value < 0 ? 0 : Value))); + } + if (Type == 0 /* Int */) + { + return fmt::format("{}", zen::ThousandsNum(int64_t(Value))); + } + return fmt::format("{:.3f}", Value); + }; + + for (const TraceModel::CounterDef& Def : m_Model.CounterDefs) + { + auto It = SeriesById.find(Def.Id); + if (It == SeriesById.end()) + { + continue; + } + const TraceModel::CounterSeries& S = *It->second; + const char* TypeStr = (Def.Type == 0) ? "int" : "flt"; + double Last = S.Samples.empty() ? 0.0 : S.Samples.back().Value; + + ZEN_CONSOLE("{:<48.48} {:>5} {:>10} {:>14} {:>14} {:>10}", + Def.Name, + TypeStr, + zen::ThousandsNum(S.Count), + FormatValue(S.Min, Def.DisplayHint, Def.Type), + FormatValue(S.Max, Def.DisplayHint, Def.Type), + FormatValue(Last, Def.DisplayHint, Def.Type)); + } + ZEN_CONSOLE(""); + } + void AppendMemorySummary() const { const AllocationSummary& AllocSummary = m_Model.AllocSummary; |