• M
    Delegate Cleanables · 0712d541
    Maysam Yabandeh 提交于
    Summary:
    Cleanable objects will perform the registered cleanups when
    they are destructed. We however rather to delay this cleaning like when
    we are gathering the merge operands. Current approach is to create the
    Cleanable object on heap (instead of on stack) and delay deleting it.
    
    By allowing Cleanables to delegate their cleanups to another cleanable
    object we can delay the cleaning without however the need to craete the
    cleanable object on heap and keeping it around. This patch applies this
    technique for the cleanups of BlockIter and shows improved performance
    for some in-memory benchmarks:
    +1.8% for merge worklaod, +6.4% for non-merge workload when the merge
    operator is specified.
    https://our.intern.facebook.com/intern/tasks?t=15168163
    
    Non-merge benchmark:
    TEST_TMPDIR=/dev/shm/v100nocomp/ ./db_bench --benchmarks=fillrandom
    --num=1000000 -value_size=100 -compression_type=none
    
    Reading random with no merge operator specified:
    TEST_TMPDIR=/dev/shm/v100nocomp/ ./db_bench
    --benchmarks="read
    Closes https://github.com/facebook/rocksdb/pull/1711
    
    Differential Revision: D4361163
    
    Pulled By: maysamyabandeh
    
    fbshipit-source-id: 9801e07
    0712d541
Makefile 50.3 KB