27 const TDigest& digest,
28 Range<const double*> quantiles);
32 template <
typename ClockT>
34 : bufferedDigest_(
std::
chrono::seconds{1}, 1000, 100) {}
36 template <
typename ClockT>
44 template <
typename ClockT>
49 template <
typename ClockT>
51 std::chrono::seconds windowDuration,
53 : bufferedSlidingWindow_(nWindows, windowDuration, 1000, 100) {}
55 template <
typename ClockT>
64 template <
typename ClockT>
void addValue(double value, TimePoint now=ClockT::now())
QuantileEstimates estimateQuantiles(Range< const double * > quantiles, TimePoint now=ClockT::now())
std::chrono::steady_clock::time_point now()
SlidingWindowQuantileEstimator(std::chrono::seconds windowDuration, size_t nWindows=60)
detail::BufferedDigest< TDigest, ClockT > bufferedDigest_
typename ClockT::time_point TimePoint
—— Concurrent Priority Queue Implementation ——
SimpleQuantileEstimator()
void addValue(double value, TimePoint now=ClockT::now())
detail::BufferedSlidingWindow< TDigest, ClockT > bufferedSlidingWindow_
TDigest merge(presorted_t, Range< const double * > sortedValues) const
QuantileEstimates estimatesFromDigest(const TDigest &digest, Range< const double * > quantiles)
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
typename ClockT::time_point TimePoint
QuantileEstimates estimateQuantiles(Range< const double * > quantiles, TimePoint now=ClockT::now())