/// <summary>
        /// Returns a anonymous timing string for the given set of nodes (non-recursive)
        /// </summary>
        /// <param name="runs"></param>
        /// <returns></returns>
        public string GetTimingInfo(IConcurrencyResults r)
        {
            var sincl  = r.SequentialRuns.InclusiveMs();
            var sexcl  = r.SequentialRuns.ExclusiveMs();
            var pincl  = r.ParallelRuns.InclusiveMs();
            var pexcl  = r.ParallelRuns.ExclusiveMs();
            var suffix = string.Format(" {0:F}%||", r.GetStats().ParallelConcurrencyPercent);

            if (r.Invocations().Max > 1)
            {
                suffix += string.Format(" calls: {0}", r.Invocations().ToString(0));
            }

            if (sexcl.DeltaRatio > DeltaAbnormalRatio)
            {
                var runTimes = r.AllRuns().Select(n => n.TicksExclusiveTotal).ToMilliseconds().Select(m => Math.Round(m));
                return(string.Format("runs exclusive: {1} {0}", suffix, String.Join("  ", runTimes)));
            }
            else if (r.SequentialRuns.First().HasChildren)
            {
                return(string.Format("exclusive: {0} ||{1}||   inclusive: {2} ||{3} {4}",
                                     sexcl.ToString(DeltaSignificantRatio),
                                     pexcl.ToString(DeltaSignificantRatio),
                                     sincl.ToString(DeltaSignificantRatio),
                                     pincl.ToString(DeltaSignificantRatio), suffix));
            }
            else
            {
                return(string.Format("{0} ||{1} {2}", sincl.ToString(DeltaSignificantRatio), pincl.ToString(DeltaSignificantRatio), suffix));;
            }
        }
예제 #2
0
 public static double ParallelRealMs(this IConcurrencyResults r)
 {
     return(r.GetStats().ParallelRealMs);
 }
예제 #3
0
 public static double FastestSequentialMs(this IConcurrencyResults r)
 {
     return(r.GetStats().SequentialMs.Min);
 }