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