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); } } ; }
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)); } }
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); }
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() }); }