opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
perf_measurement.h
Go to the documentation of this file.
1#pragma once
2
6
7#include <chrono>
8#include <memory>
9
10namespace osc
11{
13 public:
15 const std::shared_ptr<const PerfMeasurementMetadata>& metadata) :
16 metadata_{metadata}
17 {}
18
19 size_t id() const { return metadata_->id(); }
20
21 CStringView label() const { return metadata_->label(); }
22
23 CStringView filename() const { return metadata_->filename(); }
24
25 unsigned int line() const { return metadata_->line(); }
26
27 size_t call_count() const { return call_count_; }
28
29 PerfClock::duration last_duration() const { return last_duration_; }
30
31 PerfClock::duration average_duration() const
32 {
33 return call_count_ > 0 ? total_duration_/static_cast<ptrdiff_t>(call_count_) : PerfClock::duration{0};
34 }
35
36 PerfClock::duration total_duration() const { return total_duration_; }
37
38 void submit(PerfClock::time_point start, PerfClock::time_point end)
39 {
40 last_duration_ = end - start;
41 total_duration_ += last_duration_;
42 call_count_++;
43 }
44
45 void clear()
46 {
47 call_count_ = 0;
48 total_duration_ = PerfClock::duration{0};
49 last_duration_ = PerfClock::duration{0};
50 }
51
52 private:
53 std::shared_ptr<const PerfMeasurementMetadata> metadata_;
54 size_t call_count_ = 0;
55 PerfClock::duration total_duration_{0};
56 PerfClock::duration last_duration_{0};
57 };
58}
Definition c_string_view.h:12
Definition perf_measurement.h:12
PerfClock::duration average_duration() const
Definition perf_measurement.h:31
CStringView label() const
Definition perf_measurement.h:21
size_t id() const
Definition perf_measurement.h:19
size_t call_count() const
Definition perf_measurement.h:27
PerfMeasurement(const std::shared_ptr< const PerfMeasurementMetadata > &metadata)
Definition perf_measurement.h:14
PerfClock::duration total_duration() const
Definition perf_measurement.h:36
PerfClock::duration last_duration() const
Definition perf_measurement.h:29
unsigned int line() const
Definition perf_measurement.h:25
void clear()
Definition perf_measurement.h:45
CStringView filename() const
Definition perf_measurement.h:23
void submit(PerfClock::time_point start, PerfClock::time_point end)
Definition perf_measurement.h:38
Definition custom_decoration_generator.h:5
constexpr U to(T &&value)
Definition conversion.h:56