cpp-stat-bench 0.24.0
Benchmark library with statistics for C++.
Loading...
Searching...
No Matches
invocation_context_registry.h
Go to the documentation of this file.
1/*
2 * Copyright 2023 MusicScience37 (Kenta Kabashima)
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
20#pragma once
21
22#include <cstddef>
23#include <memory>
24
27
28namespace stat_bench {
29namespace bench_impl {
30
34class InvocationContextRegistry {
35public:
41 static auto instance() -> InvocationContextRegistry&;
42
52 auto create(BenchmarkCondition cond, std::size_t iterations,
53 std::size_t samples, std::size_t warming_up_samples)
55
59 void clear() noexcept;
60
66 [[nodiscard]] auto get() const -> InvocationContext&;
67
68 InvocationContextRegistry(const InvocationContextRegistry&) = delete;
69 InvocationContextRegistry(InvocationContextRegistry&&) = delete;
70 auto operator=(const InvocationContextRegistry&) = delete;
71 auto operator=(InvocationContextRegistry&&) = delete;
72
73private:
75 InvocationContextRegistry();
76
78 ~InvocationContextRegistry() = default;
79
81 std::unique_ptr<InvocationContext> context_;
82};
83
84} // namespace bench_impl
85} // namespace stat_bench
Definition of BenchmarkCondition class.
Class of conditions of benchmarks.
Class of context of invocations of benchmarks.
static auto instance() -> InvocationContextRegistry &
Get the global instance.
auto get() const -> InvocationContext &
Get the context.
auto create(BenchmarkCondition cond, std::size_t iterations, std::size_t samples, std::size_t warming_up_samples) -> InvocationContext &
Create a context.
Definition of InvocationContext class.
Namespace of internal implementation.
Namespace of stat_bench source codes.