Commit 747f8a8e authored by Brian Pane's avatar Brian Pane Committed by Sara Golemon

Small memory footprint reduction for folly::MultiLevelTimeSeries

Summary:
* Spend some extra time in getNumBuckets() in order to save
space: 8 bytes per object on 64-bit platforms.

Test Plan: Ran the unit tests

Reviewed By: simpkins@fb.com

Subscribers: ruibalp

FB internal diff: D1488345
parent 8925b642
...@@ -26,8 +26,7 @@ MultiLevelTimeSeries<VT, TT>::MultiLevelTimeSeries( ...@@ -26,8 +26,7 @@ MultiLevelTimeSeries<VT, TT>::MultiLevelTimeSeries(
size_t numBuckets, size_t numBuckets,
size_t numLevels, size_t numLevels,
const TimeType levelDurations[]) const TimeType levelDurations[])
: numBuckets_(numBuckets), : cachedTime_(0),
cachedTime_(0),
cachedSum_(0), cachedSum_(0),
cachedCount_(0) { cachedCount_(0) {
CHECK_GT(numLevels, 0); CHECK_GT(numLevels, 0);
......
...@@ -73,7 +73,10 @@ class MultiLevelTimeSeries { ...@@ -73,7 +73,10 @@ class MultiLevelTimeSeries {
/* /*
* Return the number of buckets used to track time series at each level. * Return the number of buckets used to track time series at each level.
*/ */
size_t numBuckets() const { return numBuckets_; } size_t numBuckets() const {
// The constructor ensures that levels_ has at least one item
return levels_[0].numBuckets();
}
/* /*
* Return the number of levels tracked by MultiLevelTimeSeries. * Return the number of levels tracked by MultiLevelTimeSeries.
...@@ -297,7 +300,6 @@ class MultiLevelTimeSeries { ...@@ -297,7 +300,6 @@ class MultiLevelTimeSeries {
void flush(); void flush();
private: private:
size_t numBuckets_;
std::vector<Level> levels_; std::vector<Level> levels_;
// Updates within the same time interval are cached // Updates within the same time interval are cached
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment