diff options
Diffstat (limited to 'src/histogram-inl.h')
-rw-r--r-- | src/histogram-inl.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/histogram-inl.h b/src/histogram-inl.h new file mode 100644 index 0000000000..3135041f73 --- /dev/null +++ b/src/histogram-inl.h @@ -0,0 +1,63 @@ +#ifndef SRC_HISTOGRAM_INL_H_ +#define SRC_HISTOGRAM_INL_H_ + +#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + +#include "histogram.h" +#include "node_internals.h" + +namespace node { + +inline Histogram::Histogram(int64_t lowest, int64_t highest, int figures) { + CHECK_EQ(0, hdr_init(lowest, highest, figures, &histogram_)); +} + +inline Histogram::~Histogram() { + hdr_close(histogram_); +} + +inline void Histogram::Reset() { + hdr_reset(histogram_); +} + +inline bool Histogram::Record(int64_t value) { + return hdr_record_value(histogram_, value); +} + +inline int64_t Histogram::Min() { + return hdr_min(histogram_); +} + +inline int64_t Histogram::Max() { + return hdr_max(histogram_); +} + +inline double Histogram::Mean() { + return hdr_mean(histogram_); +} + +inline double Histogram::Stddev() { + return hdr_stddev(histogram_); +} + +inline double Histogram::Percentile(double percentile) { + CHECK_GT(percentile, 0); + CHECK_LE(percentile, 100); + return hdr_value_at_percentile(histogram_, percentile); +} + +inline void Histogram::Percentiles(std::function<void(double, double)> fn) { + hdr_iter iter; + hdr_iter_percentile_init(&iter, histogram_, 1); + while (hdr_iter_next(&iter)) { + double key = iter.specifics.percentiles.percentile; + double value = iter.value; + fn(key, value); + } +} + +} // namespace node + +#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + +#endif // SRC_HISTOGRAM_INL_H_ |