public ActionResult BenchmarkRun(string machine, string label) { BenchmarkRun run = null; string nextLabel = null; // In descending label order, so earlier... foreach (var candidate in repository.RunsByMachine[machine]) { if (run != null) { nextLabel = candidate.Label; break; } if (candidate.Label == label) { run = candidate; } } ImmutableList <SourceLogEntry> changes = null; if (nextLabel != null) { string earlierHash = BenchmarkRepository.HashForLabel(nextLabel); string thisHash = BenchmarkRepository.HashForLabel(label); changes = log.EntriesBetween(earlierHash, thisHash).ToImmutableList(); } return(View(new BenchmarkRunAndSourceLogs(run, changes))); }
public BenchmarkDiff(BenchmarkRun left, BenchmarkRun right, ImmutableList <SourceLogEntry> log) { Left = left; Right = right; var leftResults = left.AllResults.ToList(); var rightResults = right.AllResults.ToList(); LeftOnly = leftResults.ExceptBy(rightResults, result => result.FullMethod); RightOnly = rightResults.ExceptBy(leftResults, result => result.FullMethod); var pairs = (from l in leftResults join r in rightResults on l.FullMethod equals r.FullMethod select new BenchmarkPair(l, r)).ToList(); LeftBetter = pairs.Where(pair => pair.Percent < ImprovementThreshold).ToList(); RightBetter = pairs.Where(pair => pair.Percent > RegressionThreshold).ToList(); bool leftEarlier = BenchmarkRepository.BuildForLabel(left.Label) < BenchmarkRepository.BuildForLabel(right.Label); var earlier = leftEarlier ? left : right; var later = leftEarlier ? right : left; var earlierHash = BenchmarkRepository.HashForLabel(earlier.Label); var laterHash = BenchmarkRepository.HashForLabel(later.Label); LogEntries = log.EntriesBetween(earlierHash, laterHash).ToList(); }
public BenchmarkDiff(BenchmarkRun left, BenchmarkRun right, ImmutableList<SourceLogEntry> log) { Left = left; Right = right; var leftResults = left.AllResults.ToList(); var rightResults = right.AllResults.ToList(); LeftOnly = leftResults.ExceptBy(rightResults, result => result.FullMethod); RightOnly = rightResults.ExceptBy(leftResults, result => result.FullMethod); var pairs = (from l in leftResults join r in rightResults on l.FullMethod equals r.FullMethod select new BenchmarkPair(l, r)).ToList(); LeftBetter = pairs.Where(pair => pair.Percent < ImprovementThreshold).ToList(); RightBetter = pairs.Where(pair => pair.Percent > RegressionThreshold).ToList(); bool leftEarlier = BenchmarkRepository.BuildForLabel(left.Label) < BenchmarkRepository.BuildForLabel(right.Label); var earlier = leftEarlier ? left : right; var later = leftEarlier ? right : left; var earlierHash = BenchmarkRepository.HashForLabel(earlier.Label); var laterHash = BenchmarkRepository.HashForLabel(later.Label); LogEntries = log.EntriesBetween(earlierHash, laterHash).ToList(); }