aboutsummaryrefslogtreecommitdiff
path: root/src/leveldb/util/histogram.h
diff options
context:
space:
mode:
authorMike Hearn <hearn@google.com>2012-06-25 11:17:22 +0200
committerPieter Wuille <pieter.wuille@gmail.com>2012-10-20 23:08:56 +0200
commit5e650d6d2dbfc284c300668e71188e663d8f0a45 (patch)
treebef5ac4e7bfa9845b23ea975be58fa3fe108ef4b /src/leveldb/util/histogram.h
parent38ac953b9df1f7a884c1ef0e94301e14c4e7477d (diff)
downloadbitcoin-5e650d6d2dbfc284c300668e71188e663d8f0a45.tar.xz
Import LevelDB 1.5, it will be used for the transaction database.
Diffstat (limited to 'src/leveldb/util/histogram.h')
-rw-r--r--src/leveldb/util/histogram.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/leveldb/util/histogram.h b/src/leveldb/util/histogram.h
new file mode 100644
index 0000000000..1ef9f3c8ab
--- /dev/null
+++ b/src/leveldb/util/histogram.h
@@ -0,0 +1,42 @@
+// 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:
+ double min_;
+ double max_;
+ double num_;
+ double sum_;
+ double sum_squares_;
+
+ enum { kNumBuckets = 154 };
+ static const double kBucketLimit[kNumBuckets];
+ double buckets_[kNumBuckets];
+
+ double Median() const;
+ double Percentile(double p) const;
+ double Average() const;
+ double StandardDeviation() const;
+};
+
+} // namespace leveldb
+
+#endif // STORAGE_LEVELDB_UTIL_HISTOGRAM_H_