1//===-- ResultAggregator.h --------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// Defines result aggregators that are used to aggregate the results from
11/// multiple full benchmark runs.
12///
13//===----------------------------------------------------------------------===//
14
15#include "BenchmarkResult.h"
16
17namespace llvm {
18namespace exegesis {
19
20class ResultAggregator {
21public:
22 static std::unique_ptr<ResultAggregator>
23 CreateAggregator(Benchmark::RepetitionModeE RepetitionMode);
24
25 virtual void AggregateResults(Benchmark &Result,
26 ArrayRef<Benchmark> OtherResults) const;
27 virtual void AggregateMeasurement(BenchmarkMeasure &Measurement,
28 const BenchmarkMeasure &NewMeasurement,
29 const Benchmark &Result) const = 0;
30
31 virtual ~ResultAggregator() = default;
32};
33
34} // namespace exegesis
35} // namespace llvm
36