Small memory footprint reduction for folly::MultiLevelTimeSeries
authorBrian Pane <brianp@fb.com>
Wed, 13 Aug 2014 06:00:02 +0000 (23:00 -0700)
committerSara Golemon <sgolemon@fb.com>
Thu, 14 Aug 2014 18:49:04 +0000 (11:49 -0700)
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

folly/stats/MultiLevelTimeSeries-defs.h
folly/stats/MultiLevelTimeSeries.h

index 6c6de1848b9c900cf69d372ec8748c798cde077e..028f764d5ff41a1a436e9e13a61aea3470d34873 100644 (file)
@@ -26,8 +26,7 @@ MultiLevelTimeSeries<VT, TT>::MultiLevelTimeSeries(
   size_t numBuckets,
   size_t numLevels,
   const TimeType levelDurations[])
-    : numBuckets_(numBuckets),
-      cachedTime_(0),
+    : cachedTime_(0),
       cachedSum_(0),
       cachedCount_(0) {
     CHECK_GT(numLevels, 0);
index 7a81046e7cd55bb1c4fa6477968cd4379cb1f6a6..84c05380488a86bb0d69cba4866b6c90d1d1e489 100644 (file)
@@ -73,7 +73,10 @@ class MultiLevelTimeSeries {
   /*
    * 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.
@@ -297,7 +300,6 @@ class MultiLevelTimeSeries {
   void flush();
 
  private:
-  size_t numBuckets_;
   std::vector<Level> levels_;
 
   // Updates within the same time interval are cached