• A
    save key comparisons in BlockIter::BinarySeek (#7068) · 82611ee2
    Andrew Kryczka 提交于
    Summary:
    This is a followup to https://github.com/facebook/rocksdb/issues/6646. In that PR, for simplicity I just appended a comparison against the 0th restart key in case `BinarySeek()`'s binary search landed at index 0. As a result there were `2/(N+1) + log_2(N)` key comparisons. This PR does it differently. Now we expand the binary search range by one so it also covers the case where target is at or before the restart key at index 0. As a result, it involves `log_2(N+1)` key comparisons.
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/7068
    
    Test Plan:
    ran readrandom with mostly default settings and counted key comparisons
    using `PerfContext`.
    
    before: `user_key_comparison_count = 28881965`
    after: `user_key_comparison_count = 27823245`
    
    setup command:
    
    ```
    $ TEST_TMPDIR=/dev/shm/dbbench ./db_bench -benchmarks=fillrandom,compact -write_buffer_size=1048576 -target_file_size_base=1048576 -max_bytes_for_level_base=4194304 -max_background_jobs=12 -level_compaction_dynamic_level_bytes=true -num=10000000
    ```
    
    benchmark command:
    
    ```
    $ TEST_TMPDIR=/dev/shm/dbbench/ ./db_bench -use_existing_db=true -benchmarks=readrandom -disable_auto_compactions=true -num=10000000 -compression_type=none -reads=1000000 -perf_level=3
    ```
    
    Reviewed By: anand1976
    
    Differential Revision: D22357032
    
    Pulled By: ajkr
    
    fbshipit-source-id: 8b01e9c1c2a4e9d02fc9dfe16c1cc0327f8bdf24
    82611ee2
可在Tags中查看这些版本中当前仓库的状态.
HISTORY.md 126.4 KB