Toolbox snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
Range.cpp
Go to the documentation of this file.
1// The Reactive C++ Toolbox.
2// Copyright (C) 2021 Reactive Markets Limited
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
16#include "Range.hpp"
17
19
20#include <cassert>
21
22namespace toolbox::bm {
23using namespace std;
24
26: hist_{hist}
27, first_{first}
28, last_{last}
29, start_{chrono::high_resolution_clock::now()}
30{
31 assert(first < last);
32}
33
35{
36 const auto end = chrono::high_resolution_clock::now();
37 const auto elapsed = chrono::duration_cast<chrono::nanoseconds>(end - start_);
38 const auto count = last_ - first_;
39 // Record average.
40 hist_.record_values(elapsed.count() / count, count);
41}
42
43} // namespace toolbox::bm
BenchmarkRange(Histogram &hist, int first, int last) noexcept
Definition Range.cpp:25
auto end() const noexcept
Definition Range.hpp:74
A High Dynamic Range (HDR) Histogram.
Definition Histogram.hpp:64
bool record_values(std::int64_t value, std::int64_t count) noexcept
STL namespace.
constexpr auto bind() noexcept
Definition Slot.hpp:92