change shared_ptr<>* to raw pointer
authorShuai Ding <sding@fb.com>
Thu, 16 Aug 2012 22:00:15 +0000 (15:00 -0700)
committerTudor Bosman <tudorb@fb.com>
Sun, 26 Aug 2012 18:13:49 +0000 (11:13 -0700)
Summary:
change shared_ptr<>* to raw pointer in
forwardIndex in RTIndex. This saves 16 bytes per
forward list (decrease from 88 to 72) and translates
to about 4-5% memory saving for RTIndex in ff tier.

Test Plan: unit test

Reviewed By: xliux@fb.com

FB internal diff: D551191

folly/ConcurrentSkipList.h

index c52238499729db87cbb7ead839d0def43f858e13..3299d75c7ba1ba38c78fe1bf89019b01ef13113c 100644 (file)
@@ -145,11 +145,11 @@ class ConcurrentSkipList {
   // being treated as a scalar in the compiler).
   static_assert(MAX_HEIGHT >= 2 && MAX_HEIGHT < 64,
       "MAX_HEIGHT can only be in the range of [2, 64)");
-  typedef detail::SkipListNode<T> NodeType;
   typedef std::unique_lock<folly::MicroSpinLock> ScopedLocker;
   typedef ConcurrentSkipList<T, Comp, MAX_HEIGHT> SkipListType;
 
  public:
+  typedef detail::SkipListNode<T> NodeType;
   typedef T value_type;
   typedef T key_type;
 
@@ -170,6 +170,12 @@ class ConcurrentSkipList {
     return boost::shared_ptr<SkipListType>(new SkipListType(height));
   }
 
+  // create a unique_ptr skiplist object with initial head height.
+  static std::unique_ptr<SkipListType> createRawInstance(int height=1) {
+    return std::unique_ptr<SkipListType>(new SkipListType(height));
+  }
+
+
   //===================================================================
   // Below are implementation details.
   // Please see ConcurrentSkipList::Accessor for stdlib-like APIs.