11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
81 static constexpr size_t OctaveCount = 64;
83 static constexpr size_t SubBucketsPerOctave = 16;
85 static constexpr size_t BucketCount = OctaveCount * SubBucketsPerOctave;
94 void setName(
const String &name);
97 const String &name()
const {
return _name; }
103 void setUnit(
const String &unit);
106 const String &unit()
const {
return _unit; }
120 void addSample(int64_t value);
126 void addSample(
const Duration &d) { addSample(d.nanoseconds()); }
129 int64_t count()
const {
return _count; }
132 int64_t min()
const {
return _count > 0 ? _min : 0; }
135 int64_t max()
const {
return _count > 0 ? _max : 0; }
160 int64_t percentile(
double p)
const;
170 String toString()
const;
179 int64_t _buckets[BucketCount] = {};
184PROMEKI_FORMAT_VIA_TOSTRING(promeki::Histogram);