Signed-off-by: Sage Weil <sage@inktank.com>
ls.back()->h.push_back(0);
ls.back()->h.push_back(2);
}
+
+void pow2_hist_t::decay(int bits)
+{
+ for (std::vector<int32_t>::iterator p = h.begin(); p != h.end(); ++p) {
+ *p >>= bits;
+ }
+ _contract();
+}
return 1 << h.size();
}
+ /// decay histogram by N bits (default 1, for a halflife)
+ void decay(int bits = 1);
+
void dump(Formatter *f) const;
void encode(bufferlist &bl) const;
void decode(bufferlist::iterator &bl);
ASSERT_EQ(500000, ub);
}
}
+
+TEST(Histogram, Decay) {
+ pow2_hist_t h;
+ h.set_bin(0, 123);
+ h.set_bin(3, 12);
+ h.set_bin(5, 1);
+ h.decay(1);
+ ASSERT_EQ(61, h.h[0]);
+ ASSERT_EQ(6, h.h[3]);
+ ASSERT_EQ(4u, h.h.size());
+}