public void PrintStatisticsToDebugOutput()

in GoogleTestAdapter/Core/Scheduling/SchedulingAnalyzer.cs [42:78]


        public void PrintStatisticsToDebugOutput()
        {
            _logger.DebugInfo(Resources.SchedulingStats);
            _logger.DebugInfo(String.Format(Resources.ExpectedTestCase, ExpectedTestcaseDurations.Count));
            _logger.DebugInfo(String.Format(Resources.ActualTestCase, ActualTestcaseDurations.Count));
            if (ExpectedTestcaseDurations.Count == 0 || ActualTestcaseDurations.Count == 0)
            {
                _logger.DebugInfo(Resources.NothingToReport);
                return;
            }

            var differences = new List<Difference>();
            differences.AddRange(ExpectedTestcaseDurations
                .Where(ed => ActualTestcaseDurations.ContainsKey(ed.Key))
                .Select(ed => new Difference
                    {
                        TestCase = ed.Key,
                        DifferenceInMs = ed.Value - ActualTestcaseDurations[ed.Key]
                    }));
            differences.Sort((d1, d2) => Math.Abs(d2.DifferenceInMs) - Math.Abs(d1.DifferenceInMs));

            int sumOfAllDifferences = differences.Select(d => d.DifferenceInMs).Sum();
            double avgDifference = (double) sumOfAllDifferences / differences.Count;
            double sumOfSquaresOfDifferences = differences.Select(d => (d.DifferenceInMs - avgDifference) * (d.DifferenceInMs - avgDifference)).Sum();
            double standardDeviation = Math.Sqrt(sumOfSquaresOfDifferences / differences.Count);

            _logger.DebugInfo(String.Format(Resources.ExpectedDurations, differences.Count));
            _logger.DebugInfo(String.Format(Resources.AvgDifference, avgDifference.ToString("F1", CultureInfo.InvariantCulture)));
            _logger.DebugInfo(String.Format(Resources.StandardDeviation, standardDeviation.ToString("F1", CultureInfo.InvariantCulture)));

            int nrOfWorstDifferences = Math.Min(10, differences.Count);
            _logger.DebugInfo(String.Format(Resources.WorstDifferences, nrOfWorstDifferences));
            for (int i = 0; i < nrOfWorstDifferences; i++)
            {
                _logger.DebugInfo(String.Format(Resources.Results, differences[i].TestCase.FullyQualifiedName, ExpectedTestcaseDurations[differences[i].TestCase], ActualTestcaseDurations[differences[i].TestCase]));
            }
        }