public static void GetMostExpensiveCalls(TextWriter wrt, MethodCallRecord R, int cnt = 0) { int i = 1; var mostExpensive = R.CompleteCollectiveReport().OrderByDescending(cr => cr.ExclusiveTicks); foreach (var cr in mostExpensive) { wrt.Write("Rank " + i + ": "); wrt.WriteLine(cr.ToString()); if (i == cnt) { return; } i++; } }
/// <summary> /// /// </summary> /// <param name="wrt"></param> /// <param name="R"></param> /// <param name="printcnt"></param> private static void GetMostExpensiveBlocking(TextWriter wrt, MethodCallRecord R, int printcnt = 0) { int i = 1; var mostExpensive = R.CompleteCollectiveReport().OrderByDescending(cr => cr.TicksSpentInBlocking); foreach (var kv in mostExpensive) { wrt.Write("#" + i + ": "); wrt.WriteLine(string.Format( "'{0}': {1} calls, {2:0.##E-00} sec. runtime exclusivesec", kv.Name, kv.CallCount, new TimeSpan(kv.TicksSpentInBlocking).TotalSeconds)); if (i == printcnt) { return; } i++; } Console.Out.Flush(); }