private void OutputReport(ProfilerNode node) { if (node == rootNode) { Debug.WriteLine("PROFILED TREE - CALLS - TIME SPENT - PERCENTAGE"); } StringBuilder output = new StringBuilder(); string sign = ""; for (int i = 0; i < node.Depth; i++) { sign += " "; } sign += node.Childern.Count > 0 ? "+" : "-"; output.Append(sign); output.Append(" "); output.Append(node.Name); output.Append(" - "); int calls = node.Stats.Calls; output.Append(calls); output.Append(" - "); output.Append(node.Stats.TotalTime); output.Append(" - "); output.Append(node.Stats.TotalTime / node.Stats.Calls); output.Append(" - "); output.Append(node.Stats.Percentage); Debug.WriteLine(output.ToString()); for (int i = 0; i < node.Childern.Count; i++) { this.OutputReport(node.Childern[i]); } }
public void Begin(string name) { if (currNode.Name != name) { ProfilerNode n = currNode.GetChildByName(name); if (n == null) { n = new ProfilerNode(currNode.Depth + 1); this.nodes.Add(n); currNode.Childern.Add(n); n.Parent = currNode; } if (n.Name == null || n.Name.Length == 0) { n.Name = name; } currNode = n; currNode.Begin(); } else { currNode.End(); currNode.Begin(); } }
public void End(string name) { currNode.End(); ProfilerNode n = currNode.Parent; if (n != null) { currNode = n; } }
private Profiler(int frameFrequency) { this.frameFrequency = frameFrequency; this.frameCounter = 0; this.nodes = new List <ProfilerNode>(); this.rootNode = new ProfilerNode(0); this.rootNode.Name = "root"; this.currNode = this.rootNode; this.nodes.Add(this.currNode); }