Пример #1
0
        public AnalysisDataSource(string zipFile)
        {
            Logger.Log($"Beginning data source construction for zip file {zipFile}");
            var tempPath = Path.Combine(Path.GetTempPath(), TempFolderName, Guid.NewGuid().ToString());

            Directory.CreateDirectory(tempPath);
            m_rootDir = tempPath;

            Logger.Log("Extracting zip file");
            ZipFile.ExtractToDirectory(zipFile, tempPath);

            Logger.Log("Loading JSON result file");
            var       outputJson = Path.Combine(tempPath, Constants.OverallResultsJsonName);
            RunResult result     = JsonConvert.DeserializeObject <RunResult>(File.ReadAllText(outputJson));

            Settings = result.Settings;

            // see the comment in CoreGCBench.Runner.Driver::PackageResults(RunResult, Options)
            // for a precise description of what the zip file looks like.
            Logger.LogVerbose("Enumerating versions");

            //Parallel.ForEach(Directory.EnumerateDirectories(tempPath), versionFolder =>
            foreach (var versionFolder in Directory.EnumerateDirectories(tempPath))
            {
                var ds = new VersionAnalysisDataSource(m_rootDir, versionFolder);
                lock (Versions)
                {
                    Versions.Add(ds);
                }
            }
            ;
        }
Пример #2
0
        private IEnumerable <VersionComparisonAnalysisResult> DoVersionComparisons(VersionAnalysisDataSource baseline)
        {
            foreach (var version in m_dataSource.Versions())
            {
                if (version.Version.Name.Equals(baseline.Version.Name))
                {
                    continue;
                }

                yield return(DoSingleVersionComparison(baseline, version));
            }
        }
Пример #3
0
        private VersionComparisonAnalysisResult DoSingleVersionComparison(VersionAnalysisDataSource baseline, VersionAnalysisDataSource candidate)
        {
            Debug.Assert(baseline.BenchmarkResults.Count == candidate.BenchmarkResults.Count);
            var result = new VersionComparisonAnalysisResult();

            foreach (var bench in baseline.BenchmarkResults.Zip(candidate.BenchmarkResults, Tuple.Create))
            {
                result.Benchmarks.Add(DoSingleBenchmarkComparison(bench.Item1, bench.Item2));
            }

            result.Version = candidate.Version;
            return(result);
        }
Пример #4
0
        public ComparisonAnalysisResult RunAnalysis()
        {
            VersionAnalysisDataSource baseline = null;

            foreach (var version in m_dataSource.Versions())
            {
                if (version.Version.Name.Equals(m_baseline))
                {
                    baseline = version;
                    break;
                }
            }

            Debug.Assert(baseline != null);

            return(new ComparisonAnalysisResult
            {
                Settings = m_dataSource.Settings,
                PValue = m_pvalue,
                Candidates = DoVersionComparisons(baseline).ToList()
            });
        }