Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
 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()
     });
 }