+++ /dev/null
-package hdrhistogram
-
-// A WindowedHistogram combines histograms to provide windowed statistics.
-type WindowedHistogram struct {
- idx int
- h []Histogram
- m *Histogram
-
- Current *Histogram
-}
-
-// NewWindowed creates a new WindowedHistogram with N underlying histograms with
-// the given parameters.
-func NewWindowed(n int, minValue, maxValue int64, sigfigs int) *WindowedHistogram {
- w := WindowedHistogram{
- idx: -1,
- h: make([]Histogram, n),
- m: New(minValue, maxValue, sigfigs),
- }
-
- for i := range w.h {
- w.h[i] = *New(minValue, maxValue, sigfigs)
- }
- w.Rotate()
-
- return &w
-}
-
-// Merge returns a histogram which includes the recorded values from all the
-// sections of the window.
-func (w *WindowedHistogram) Merge() *Histogram {
- w.m.Reset()
- for _, h := range w.h {
- w.m.Merge(&h)
- }
- return w.m
-}
-
-// Rotate resets the oldest histogram and rotates it to be used as the current
-// histogram.
-func (w *WindowedHistogram) Rotate() {
- w.idx++
- w.Current = &w.h[w.idx%len(w.h)]
- w.Current.Reset()
-}