public void GetStats(Dictionary <MethodBase, MethodStats> statsDict) { var selfTicks = Ticks; foreach (var child in Children) { child.GetStats(statsDict); selfTicks -= child.Ticks; } var method = MethodBaseTracingInstaller.GetMethod(MethodId); method = method.IsGenericMethod ? ((MethodInfo)method).GetGenericMethodDefinition() : method; MethodStats stats; if (!statsDict.TryGetValue(method, out stats)) { statsDict.Add(method, new MethodStats { Calls = Calls, Method = method, Ticks = selfTicks }); } else { stats.Calls += Calls; stats.Ticks += selfTicks; } }
public MethodStatsNode GetStats(long totalTicks) { return(new MethodStatsNode { MethodStats = new MethodStats { Method = MethodBaseTracingInstaller.GetMethod(MethodId), Calls = Calls, Ticks = Ticks, Percent = totalTicks == 0 ? 0.0 : Ticks * 100.0 / totalTicks }, Children = Children.Select(child => { var childStats = child.GetStats(totalTicks); return childStats; }).OrderByDescending(stats => stats.MethodStats.Ticks). ToArray() }); }