1179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org// Copyright (c) 2011 The LevelDB Authors. All rights reserved. 2179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org// Use of this source code is governed by a BSD-style license that can be 3179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org// found in the LICENSE file. See the AUTHORS file for names of contributors. 4179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 5179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org#ifndef STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ 6179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org#define STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ 7179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 8179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org#include <string> 9179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 10179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.orgnamespace leveldb { 11179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 12179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.orgclass Histogram { 13179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org public: 14179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org Histogram() { } 15179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org ~Histogram() { } 16179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 17179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org void Clear(); 18179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org void Add(double value); 19d36ce84e66c7d3cee978fbeb52721c30dfb842a5gabor@google.com void Merge(const Histogram& other); 20179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 21179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org std::string ToString() const; 22179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 23179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org private: 24179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double min_; 25179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double max_; 26179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double num_; 27179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double sum_; 28179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double sum_squares_; 29179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 30179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org enum { kNumBuckets = 154 }; 31179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org static const double kBucketLimit[kNumBuckets]; 32179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double buckets_[kNumBuckets]; 33179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 34179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double Median() const; 35179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double Percentile(double p) const; 36179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double Average() const; 37179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org double StandardDeviation() const; 38179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org}; 39179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 4045b9940be332834440bd5299419f396e38085ebehans@chromium.org} // namespace leveldb 41179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org 42179be588c25dccaa963df9c9c104fc6229435483jorlow@chromium.org#endif // STORAGE_LEVELDB_UTIL_HISTOGRAM_H_ 43