44 using ThisPtr = TraceAggregateNodePtr;
45 using ThisRefPtr = TraceAggregateNodeRefPtr;
49 static ThisRefPtr New() {
50 return This::New(
TfToken(
"root"), 0, 0);
53 static ThisRefPtr New(
const TfToken &key,
56 const int exclusiveCount = 1) {
57 return TfCreateRefPtr(
new This(key, ts, count, exclusiveCount));
60 TRACE_API TraceAggregateNodeRefPtr
61 Append(
const TfToken &key, TimeStamp ts,
int c = 1,
int xc = 1);
65 AppendBlind(
const TfToken &key, TimeStamp ts,
int c = 1,
int xc = 1);
67 TRACE_API
void Append(TraceAggregateNodeRefPtr child);
84 return recursive ? _recursiveCount : _count;
96 TRACE_API
void AppendInclusiveCounterValue(
int index,
double value);
98 TRACE_API
double GetInclusiveCounterValue(
int index)
const;
100 TRACE_API
void AppendExclusiveCounterValue(
int index,
double value);
102 TRACE_API
double GetExclusiveCounterValue(
int index)
const;
113 const TraceAggregateNodePtrVector GetChildren() {
115 return TraceAggregateNodePtrVector( _children.begin(),_children.end() );
118 const TraceAggregateNodeRefPtrVector &GetChildrenRef() {
122 TRACE_API TraceAggregateNodeRefPtr GetChild(
const TfToken &key);
123 TraceAggregateNodeRefPtr GetChild(
const std::string &key) {
132 _expanded = expanded;
149 TimeStamp scopeOverhead, TimeStamp timerQuantum,
150 uint64_t *numDescendantNodes =
nullptr);
182 int count,
int exclusiveCount) :
183 _key(key), _ts(ts), _exclusiveTs(ts),
184 _count(count), _exclusiveCount(exclusiveCount),
185 _recursiveCount(count), _recursiveExclusiveTs(ts), _expanded(false),
186 _isRecursionMarker(false), _isRecursionHead(false),
187 _isRecursionProcessed(false) {}
191 void _MergeRecursive(
const TraceAggregateNodeRefPtr &node);
193 void _SetAsRecursionMarker(TraceAggregateNodePtr parent);
199 TimeStamp _exclusiveTs;
206 TraceAggregateNodePtr _recursionParent;
207 TimeStamp _recursiveExclusiveTs;
209 TraceAggregateNodeRefPtrVector _children;
210 _ChildDictionary _childrenByKey;
215 struct _CounterValue {
216 _CounterValue() : inclusive(0.0), exclusive(0.0) {}
224 _CounterValues _counterValues;
233 _isRecursionMarker:1,
242 _isRecursionProcessed:1;
TRACE_API void AdjustForOverheadAndNoise(TimeStamp scopeOverhead, TimeStamp timerQuantum, uint64_t *numDescendantNodes=nullptr)
Subtract scopeOverhead cost times the number of descendant nodes from the inclusive time of each node...