10#include "architecture.hpp"
11#include "fixed_string.hpp"
12#include "time_stamp_count.hpp"
14#include "unfair_mutex.hpp"
37 ttlet lock = std::scoped_lock(_mutex);
38 ttlet &map_ = _map.get_or_make();
39 ttlet it = map_.find(name);
40 if (it == map_.cend()) {
57 operator uint64_t() const noexcept
59 return _total_count.
load(std::memory_order::relaxed);
62 static void log() noexcept
64 ttlet lock = std::scoped_lock(_mutex);
66 for (ttlet &[
string, counter]: _map.get_or_make()) {
72 static void log_header() noexcept;
76 void log(
std::
string const &tag) noexcept;
80 _total_count.
fetch_add(1, std::memory_order::relaxed);
84 uint64_t operator++(
int)
noexcept
86 return _total_count.
fetch_add(1, std::memory_order::relaxed);
93 _total_count.
fetch_add(1, std::memory_order::relaxed);
94 fetch_max(_duration_max, duration, std::memory_order::relaxed);
95 fetch_min(_duration_min, duration, std::memory_order::relaxed);
101 _duration_avg.
fetch_add(duration, std::memory_order::relaxed);
126template<basic_fixed_
string Tag>
131 ttlet lock = std::scoped_lock(_mutex);
138template<basic_fixed_
string Tag>
Definition counters.hpp:27
void add_duration(uint64_t duration) noexcept
Add a duration.
Definition counters.hpp:91
static counter * get_if(std::string const &name) noexcept
Get the named counter.
Definition counters.hpp:35
Definition counters.hpp:127
An unfair mutex This is a fast implementation of a mutex which does not fairly arbitrate between mult...
Definition unfair_mutex.hpp:33