#include <userver/utils/statistics/percentile.hpp>
Class allows easy calculation of percentiles.
Stores M + ExtraBuckets buckets of type Counter.
On Account(x) the bucket to increment is chosen depending on x value. If x belongs to:
[0, M), then bucket from M buckets;[M, M + ExtraBuckets * ExtraBucketSize), then bucket from ExtraBuckets;ExtraBuckets.On GetPercentile(percent) class sums up the required amount of buckets, knowing the total count of Account(x) invocations.
| M | buckets count for value step of 1  | 
| Counter | type of all the buckets | 
| ExtraBuckets | buckets for value step of ExtraBucketSize  | 
| ExtraBucketSize | ExtraBuckets store values with this precision  | 
Example: Precisely count for first 500 milliseconds of execution using std::uint32_t counters and leave 100 buckets for all the other values with precision of 9 milliseconds:
Type is safe to read/write concurrently from different threads/coroutines.
Percentile metrics are non-summable, e.g. given RPS counts and timing percentiles for multiple hosts or handlers, we cannot accurately compute the total timing percentiles.
Definition at line 66 of file percentile.hpp.
Public Member Functions | |
| Percentile (const Percentile< M, Counter, ExtraBuckets, ExtraBucketSize > &other) noexcept | |
| Percentile & | operator= (const Percentile &rhs) noexcept | 
| void | Account (std::size_t value) noexcept | 
| Account for another value.   | |
| std::size_t | GetPercentile (double percent) const | 
| Get X percentile - min value P so that total number of elements in buckets is no less than X percent.   | |
| template<class Duration = std::chrono::seconds> | |
| void | Add (const Percentile< M, Counter, ExtraBuckets, ExtraBucketSize > &other, Duration this_epoch_duration=Duration(), Duration before_this_epoch_duration=Duration()) | 
| void | Reset () noexcept | 
| Zero out all the buckets and total number of elements.   | |
| Counter | Count () const noexcept | 
| Total number of elements.   | |
      
  | 
  inlinenoexcept | 
Definition at line 68 of file percentile.hpp.
      
  | 
  inlinenoexcept | 
Definition at line 74 of file percentile.hpp.
      
  | 
  inlinenoexcept | 
Account for another value.
1 is added to the bucket corresponding to value 
Definition at line 102 of file percentile.hpp.
      
  | 
  inline | 
Definition at line 151 of file percentile.hpp.
      
  | 
  inlinenoexcept | 
Total number of elements.
Definition at line 177 of file percentile.hpp.
      
  | 
  inline | 
Get X percentile - min value P so that total number of elements in buckets is no less than X percent.
| percent | - value in [0..100] - requested percentile. If outside of 100, then returns last bucket that has any element in it. | 
Definition at line 125 of file percentile.hpp.
      
  | 
  inlinenoexcept | 
Definition at line 79 of file percentile.hpp.
      
  | 
  inlinenoexcept | 
Zero out all the buckets and total number of elements.
Definition at line 170 of file percentile.hpp.