init?()

in Sources/CollectionsBenchmark/BenchmarkCLI/BenchmarkCLI+Results+Compare.swift [266:298]


    init?(before: TaskResults, after: TaskResults) {
      var improvementFactors: [Double] = []
      var regressionFactors: [Double] = []
      for (size, before) in before {
        let after = after[size]
        guard let amin = before.minimum, let bmin = after.minimum else { continue }
        guard amin.seconds > 0, bmin.seconds > 0 else { continue }
        if amin < bmin {
          regressionFactors.append(amin.seconds / bmin.seconds)
        } else {
          improvementFactors.append(amin.seconds / bmin.seconds)
        }
      }
      guard !improvementFactors.isEmpty || !regressionFactors.isEmpty else { return nil }
      overallCount = improvementFactors.count + regressionFactors.count
      improvementCount = improvementFactors.count
      regressionCount = regressionFactors.count

      overall = regressionFactors.sorted().reduce(into: 0, { $0 += $1 })
      overall += improvementFactors.sorted().reduce(into: 0, { $0 += $1 })
      overall /= Double(overallCount)

      #if false // average of absolutes
      score =
        (improvementFactors + regressionFactors.map { 1 / $0 })
        ._scaledAverage(count: overallCount)
      #else
      score = overall < 1 ? 1 / overall : overall
      #endif

      improvements = improvementFactors._scaledAverage(count: overallCount)
      regressions = regressionFactors._scaledAverage(count: overallCount)
    }