mirror of https://github.com/facebook/rocksdb.git
3dff28cf9b
Summary: For performance purposes, the lower level routines were changed to use a SystemClock* instead of a std::shared_ptr<SystemClock>. The shared ptr has some performance degradation on certain hardware classes. For most of the system, there is no risk of the pointer being deleted/invalid because the shared_ptr will be stored elsewhere. For example, the ImmutableDBOptions stores the Env which has a std::shared_ptr<SystemClock> in it. The SystemClock* within the ImmutableDBOptions is essentially a "short cut" to gain access to this constant resource. There were a few classes (PeriodicWorkScheduler?) where the "short cut" property did not hold. In those cases, the shared pointer was preserved. Using db_bench readrandom perf_level=3 on my EC2 box, this change performed as well or better than 6.17: 6.17: readrandom : 28.046 micros/op 854902 ops/sec; 61.3 MB/s (355999 of 355999 found) 6.18: readrandom : 32.615 micros/op 735306 ops/sec; 52.7 MB/s (290999 of 290999 found) PR: readrandom : 27.500 micros/op 871909 ops/sec; 62.5 MB/s (367999 of 367999 found) (Note that the times for 6.18 are prior to revert of the SystemClock). Pull Request resolved: https://github.com/facebook/rocksdb/pull/8033 Reviewed By: pdillinger Differential Revision: D27014563 Pulled By: mrambacher fbshipit-source-id: ad0459eba03182e454391b5926bf5cdd45657b67 |
||
---|---|---|
.. | ||
aligned_buffer.h | ||
autovector.h | ||
autovector_test.cc | ||
bloom_impl.h | ||
bloom_test.cc | ||
build_version.cc.in | ||
cast_util.h | ||
channel.h | ||
coding.cc | ||
coding.h | ||
coding_lean.h | ||
coding_test.cc | ||
compaction_job_stats_impl.cc | ||
comparator.cc | ||
compression.h | ||
compression_context_cache.cc | ||
compression_context_cache.h | ||
concurrent_task_limiter_impl.cc | ||
concurrent_task_limiter_impl.h | ||
core_local.h | ||
crc32c.cc | ||
crc32c.h | ||
crc32c_arm64.cc | ||
crc32c_arm64.h | ||
crc32c_ppc.c | ||
crc32c_ppc.h | ||
crc32c_ppc_asm.S | ||
crc32c_ppc_constants.h | ||
crc32c_test.cc | ||
defer.h | ||
defer_test.cc | ||
duplicate_detector.h | ||
dynamic_bloom.cc | ||
dynamic_bloom.h | ||
dynamic_bloom_test.cc | ||
fastrange.h | ||
file_checksum_helper.cc | ||
file_checksum_helper.h | ||
file_reader_writer_test.cc | ||
filelock_test.cc | ||
filter_bench.cc | ||
gflags_compat.h | ||
hash.cc | ||
hash.h | ||
hash_map.h | ||
hash_test.cc | ||
heap.h | ||
heap_test.cc | ||
kv_map.h | ||
log_write_bench.cc | ||
math.h | ||
math128.h | ||
murmurhash.cc | ||
murmurhash.h | ||
mutexlock.h | ||
ppc-opcode.h | ||
random.cc | ||
random.h | ||
random_test.cc | ||
rate_limiter.cc | ||
rate_limiter.h | ||
rate_limiter_test.cc | ||
repeatable_thread.h | ||
repeatable_thread_test.cc | ||
ribbon_alg.h | ||
ribbon_config.cc | ||
ribbon_config.h | ||
ribbon_impl.h | ||
ribbon_test.cc | ||
set_comparator.h | ||
slice.cc | ||
slice_test.cc | ||
slice_transform_test.cc | ||
status.cc | ||
stderr_logger.h | ||
stop_watch.h | ||
string_util.cc | ||
string_util.h | ||
thread_list_test.cc | ||
thread_local.cc | ||
thread_local.h | ||
thread_local_test.cc | ||
thread_operation.h | ||
threadpool_imp.cc | ||
threadpool_imp.h | ||
timer.h | ||
timer_queue.h | ||
timer_queue_test.cc | ||
timer_test.cc | ||
user_comparator_wrapper.h | ||
vector_iterator.h | ||
work_queue.h | ||
work_queue_test.cc | ||
xxh3p.h | ||
xxhash.cc | ||
xxhash.h |