aboutsummaryrefslogtreecommitdiff
path: root/src/zen/trace/trace_analyze.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zen/trace/trace_analyze.cpp')
-rw-r--r--src/zen/trace/trace_analyze.cpp54
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;