示例#1
0
            public ComparisonData(RunDefinition before, RunDefinition after,
                                  ReportAverages beforeDisplayed, ReportAverages afterDisplayed,
                                  ReportAverages beforeNativeToManaged, ReportAverages afterNativeToManaged,
                                  ReportAverages beforeTotalInit, ReportAverages afterTotalInit)
            {
                Before = before;
                After  = after;

                BeforeDisplayed = beforeDisplayed;
                AfterDisplayed  = afterDisplayed;

                BeforeNativeToManaged = beforeNativeToManaged;
                AfterNativeToManaged  = afterNativeToManaged;

                BeforeTotalInit = beforeTotalInit;
                AfterTotalInit  = afterTotalInit;
            }
示例#2
0
        void Averages(StreamWriter sw, string title, Project project, List <Column <ReportLinePerformance> > columns, Action <List <RunResults> > sorter)
        {
            sw.WriteLine();
            sw.WriteLine($"### {title}");
            sw.WriteLine();

            var reportLines    = new List <ReportLinePerformance> ();
            var sortedAverages = new List <RunResults> ();

            var reportLinesNoOutliers    = new List <ReportLinePerformance> ();
            var sortedAveragesNoOutliers = new List <RunResults> ();

            var reportLinesNoSlowest    = new List <ReportLinePerformance> ();
            var sortedAveragesNoSlowest = new List <RunResults> ();

            foreach (RunDefinition run in project.Runs)
            {
                var averages = new ReportAverages(run, project.RepetitionCount, sorter);

                sortedAverages.Add(averages.All);
                reportLines.Add(new ReportLinePerformance());

                if (averages.NoOutliers != null)
                {
                    sortedAveragesNoOutliers.Add(averages.NoOutliers);
                    reportLinesNoOutliers.Add(new ReportLinePerformance());
                }

                if (averages.NoSlowest != null)
                {
                    sortedAveragesNoSlowest.Add(averages.NoSlowest);
                    reportLinesNoSlowest.Add(new ReportLinePerformance());
                }
            }

            bool haveOutliers  = sortedAveragesNoOutliers.Count > 0;
            bool haveNoSlowest = sortedAveragesNoSlowest.Count > 0;

            SortAndPrepare(sortedAverages, reportLines);

            if (haveOutliers || haveNoSlowest)
            {
                sw.WriteLine("All runs:");
            }
            WriteTable(sw, reportLines, columns);

            if (haveNoSlowest)
            {
                SortAndPrepare(sortedAveragesNoSlowest, reportLinesNoSlowest);
                sw.WriteLine();
                sw.WriteLine("Slowest run removed:");
                WriteTable(sw, reportLinesNoSlowest, columns);
            }

            if (haveOutliers)
            {
                SortAndPrepare(sortedAveragesNoOutliers, reportLinesNoOutliers);
                sw.WriteLine();
                sw.WriteLine("Slowest and fastest runs removed:");
                WriteTable(sw, reportLinesNoOutliers, columns);
            }

            void SortAndPrepare(List <RunResults> averages, List <ReportLinePerformance> lines)
            {
                sorter(averages);
                for (int i = 0; i < averages.Count; i++)
                {
                    RunResults            average = averages[i];
                    ReportLinePerformance rl      = lines[i];

                    rl.NativeToManaged = ToMilliseconds(average.NativeToManaged);
                    rl.TotalInit       = ToMilliseconds(average.TotalInit);
                    rl.Displayed       = ToMilliseconds(average.Displayed);
                    rl.Notes           = average.Owner.Description;
                }
            }
        }