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