summaryrefslogtreecommitdiff
path: root/src/histogram-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/histogram-inl.h')
-rw-r--r--src/histogram-inl.h63
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_