Пример #1
0
        public VersionAnalysisDataSource(string rootDir, string versionFolder)
        {
            Logger.Log($"Processing individual version {versionFolder}");

            //Parallel.ForEach(Directory.EnumerateDirectories(versionFolder), benchmarkFolder =>
            foreach (var benchmarkFolder in Directory.EnumerateDirectories(versionFolder))
            {
                var ds = new BenchmarkDataSource(rootDir, benchmarkFolder);
                lock (BenchmarkResults)
                {
                    BenchmarkResults.Add(ds);
                }
            }
            ;

            Version = JsonConvert.DeserializeObject <CoreClrVersion>(
                File.ReadAllText(Path.Combine(versionFolder, Constants.VersionJsonName)));
        }
Пример #2
0
        protected IEnumerable <MetricValue> CalculateMetrics(BenchmarkDataSource bench)
        {
            foreach (var metric in m_metrics.Metrics)
            {
                List <double> values = new List <double>();
                foreach (var iter in bench.Iterations)
                {
                    values.Add(metric.GetValue(iter));
                }

                yield return(new MetricValue
                {
                    Name = metric.Name,
                    Unit = metric.Unit,
                    Value = values.Average(),
                    StandardDeviation = values.StandardDeviation(),
                    SampleSize = values.Count
                });
            }
        }
Пример #3
0
        private BenchmarkComparisonAnalysisResult DoSingleBenchmarkComparison(BenchmarkDataSource baseline, BenchmarkDataSource candidate)
        {
            var result           = new BenchmarkComparisonAnalysisResult();
            var baselineMetrics  = CalculateMetrics(baseline);
            var candidateMetrics = CalculateMetrics(candidate);

            foreach (var metric in baselineMetrics.Zip(candidateMetrics, Tuple.Create))
            {
                var baselineMetric  = metric.Item1;
                var candidateMetric = metric.Item2;
                var comp            = new MetricComparison();
                comp.Metric    = baselineMetric.Name;
                comp.Unit      = baselineMetric.Unit;
                comp.Baseline  = baselineMetric;
                comp.Candidate = candidateMetric;
                comp.Decision  = MakeDecision(baselineMetric, candidateMetric);
                result.Metrics.Add(comp);
            }

            result.Benchmark = baseline.Benchmark;
            return(result);
        }