diff options
| author | KunoiSayami <[email protected]> | 2021-11-09 22:00:01 +0800 |
|---|---|---|
| committer | KunoiSayami <[email protected]> | 2021-11-09 22:00:01 +0800 |
| commit | 9907b61c574baf0747747f1c512f7cdd88ebed25 (patch) | |
| tree | 358acb09ff8d7b0589a63b8a810e6082046877fe /util/histogram.h | |
init
Diffstat (limited to 'util/histogram.h')
| -rw-r--r-- | util/histogram.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/util/histogram.h b/util/histogram.h new file mode 100644 index 0000000..4da60fb --- /dev/null +++ b/util/histogram.h @@ -0,0 +1,44 @@ +// Copyright (c) 2011 The LevelDB Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. See the AUTHORS file for names of contributors. + +#ifndef STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ +#define STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ + +#include <string> + +namespace leveldb { + +class Histogram { + public: + Histogram() {} + ~Histogram() {} + + void Clear(); + void Add(double value); + void Merge(const Histogram& other); + + std::string ToString() const; + + private: + enum { kNumBuckets = 154 }; + + double Median() const; + double Percentile(double p) const; + double Average() const; + double StandardDeviation() const; + + static const double kBucketLimit[kNumBuckets]; + + double min_; + double max_; + double num_; + double sum_; + double sum_squares_; + + double buckets_[kNumBuckets]; +}; + +} // namespace leveldb + +#endif // STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ |
