xref: /aosp_15_r20/external/leveldb/util/histogram.h (revision 9507f98c5f32dee4b5f9e4a38cd499f3ff5c4490)
1*9507f98cSAndroid Build Coastguard Worker // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2*9507f98cSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*9507f98cSAndroid Build Coastguard Worker // found in the LICENSE file. See the AUTHORS file for names of contributors.
4*9507f98cSAndroid Build Coastguard Worker 
5*9507f98cSAndroid Build Coastguard Worker #ifndef STORAGE_LEVELDB_UTIL_HISTOGRAM_H_
6*9507f98cSAndroid Build Coastguard Worker #define STORAGE_LEVELDB_UTIL_HISTOGRAM_H_
7*9507f98cSAndroid Build Coastguard Worker 
8*9507f98cSAndroid Build Coastguard Worker #include <string>
9*9507f98cSAndroid Build Coastguard Worker 
10*9507f98cSAndroid Build Coastguard Worker namespace leveldb {
11*9507f98cSAndroid Build Coastguard Worker 
12*9507f98cSAndroid Build Coastguard Worker class Histogram {
13*9507f98cSAndroid Build Coastguard Worker  public:
Histogram()14*9507f98cSAndroid Build Coastguard Worker   Histogram() {}
~Histogram()15*9507f98cSAndroid Build Coastguard Worker   ~Histogram() {}
16*9507f98cSAndroid Build Coastguard Worker 
17*9507f98cSAndroid Build Coastguard Worker   void Clear();
18*9507f98cSAndroid Build Coastguard Worker   void Add(double value);
19*9507f98cSAndroid Build Coastguard Worker   void Merge(const Histogram& other);
20*9507f98cSAndroid Build Coastguard Worker 
21*9507f98cSAndroid Build Coastguard Worker   std::string ToString() const;
22*9507f98cSAndroid Build Coastguard Worker 
23*9507f98cSAndroid Build Coastguard Worker  private:
24*9507f98cSAndroid Build Coastguard Worker   enum { kNumBuckets = 154 };
25*9507f98cSAndroid Build Coastguard Worker 
26*9507f98cSAndroid Build Coastguard Worker   double Median() const;
27*9507f98cSAndroid Build Coastguard Worker   double Percentile(double p) const;
28*9507f98cSAndroid Build Coastguard Worker   double Average() const;
29*9507f98cSAndroid Build Coastguard Worker   double StandardDeviation() const;
30*9507f98cSAndroid Build Coastguard Worker 
31*9507f98cSAndroid Build Coastguard Worker   static const double kBucketLimit[kNumBuckets];
32*9507f98cSAndroid Build Coastguard Worker 
33*9507f98cSAndroid Build Coastguard Worker   double min_;
34*9507f98cSAndroid Build Coastguard Worker   double max_;
35*9507f98cSAndroid Build Coastguard Worker   double num_;
36*9507f98cSAndroid Build Coastguard Worker   double sum_;
37*9507f98cSAndroid Build Coastguard Worker   double sum_squares_;
38*9507f98cSAndroid Build Coastguard Worker 
39*9507f98cSAndroid Build Coastguard Worker   double buckets_[kNumBuckets];
40*9507f98cSAndroid Build Coastguard Worker };
41*9507f98cSAndroid Build Coastguard Worker 
42*9507f98cSAndroid Build Coastguard Worker }  // namespace leveldb
43*9507f98cSAndroid Build Coastguard Worker 
44*9507f98cSAndroid Build Coastguard Worker #endif  // STORAGE_LEVELDB_UTIL_HISTOGRAM_H_
45