class_docstr: Compares suites/benchmarks from runners.
  
  It is up to the caller that ensure that runners are compatible (both from
  the same language implementation).
class_docstr_tok: ["Compares","suites\/benchmarks","from","runners",".","It","is","up","to","the","caller","that","ensure","that","runners","are","compatible","(","both","from","the","same","language","implementation",")","."]
code: def comparisons(self):
      contender = self.contender.suites
      baseline = self.baseline.suites
      suites = pairwise_compare(contender, baseline)
  
      for suite_name, (suite_cont, suite_base) in suites:
          benchmarks = pairwise_compare(
              suite_cont.benchmarks, suite_base.benchmarks
          )
  
          for _, (bench_cont, bench_base) in benchmarks:
              yield BenchmarkComparator(
                  bench_cont,
                  bench_base,
                  threshold=self.threshold,
                  suite_name=suite_name,
              )
  
file_path: arrow/dev/archery/archery/benchmark/compare.py
label_desc: Use image node_id 2 for calling the RunnerComparator obj's underlying member method code with example usage: obj.comparisons() without return types