Performance Tests - laurynas-biveinis/unodb GitHub Wiki
Flavors
Concurrent ART flavor overhead in single threaded workloads
Code changes
- 2021-03-14: Effect of replacing RMW atomics with load non atomic modify store in OL critical sections
- 2021-04-22: Effect of removing
std::uncaught_exceptions
calls on OL obsoleting critical section enter and exit - 2021-05-05: Effect of removing polymorphism on inode entry removal
- 2021-05-06: Effect of removing redundant
nullptr
checks in deleters - 2021-05-11: Effect of annotating
pmr_allocate
with__attribute__((malloc,returns_nonnull))
- 2021-05-15: Effect of removing Node256 fullness check on
add
- 2021-05-16: Effect of removing
is_full
dispatch onadd
node path - 2021-05-26: Effect of removing node type check before growing inode
- 2021-05-28: Effect of merging
find_child
andadd
node type dispatch - 2021-06-09: Effect of branching exactly once in
remove
code path - 2021-06-10: Effect of initializing Node48
child_indexes
at declaration - 2021-06-21: Effect of removing branching on
children_count
in N4insert_position_search
- 2021-06-29: Effect of SIMD'ing Node4 insert position search
- 2021-07-20: Effect of tagged node pointers
- 2021-09-20: Effect of LD_PRELOAD'ing jemalloc
- 2021-09-24: Effect of removing pool PMR allocators
- 2021-10-13: Effect of
optimistic_lock::try_read_lock
testing once in the straight path - 2021-10-14: Effect of fully inlining
try_read_unlock
- 2021-11-22: Effect of lock-free QSBR step 1
- 2021-11-22: Effect of lock-free QSBR step 2
- 2021-11-25: Effect of lock-free QSBR step 3
- 2021-11-26: Effect of lock-free QSBR step 4
- 2021-12-07: Effect of lock-free QSBR step 5
- 2021-12-17: Effect of lock-free QSBR step 6
- 2021-12-17: Effect of lock-free QSBR step 7
- 2021-12-17: Effect of lock-free QSBR step 8
- 2021-12-22: Effect of lock-free QSBR step 9
- 2021-12-23: Effect of lock-free QSBR step 10
- 2021-12-23: Effect of lock-free QSBR step 11
- 2021-12-23: Effect of lock-free QSBR step 12
- 2022-03-16: Effect of padding OLC ART counters
- 2022-04-22: Effect of AVX2 for Node48 insert position search
- 2022-04-29: Effect of Node48 AVX2 insert position search unrolling x2
- 2022-05-03: Effect of Node48 AVX2 insert position search unrolling x4
- 2022-05-04: Effect of simpler Node4 add_two_to_empty key2_i
- 2022-08-03: Effect of Node4 NEON search
- 2022-08-05: Effect of Node16 NEON search
- 2022-08-05: Effect of Node16 NEON search replacing uint128_t with a ternary
- 2022-08-07: Effect of Node48 NEON search
- 2022-08-11: Effect of Node48 NEON search unrolled x2
- 2025-01-30: Effect of replacing RMW with W in optimistic lock obsoletion
- 2025-01-30: Effect of replacing RMW with W in optimistic lock write unlock
Unmerged changes
- 2022-10-24: Effect of jemalloc sdallocx sized-free
Compilers
- 2021-05-23: Performance of LLVM 12 vs LLVM 11
- 2021-05-24: Performance of GCC 11 vs GCC 10
- 2022-07-04: Performance of LLVM 12 vs LLVM 11, take 2
- 2022-08-26: Performance of LLVM 13 vs LLVM 12
- 2022-08-31: Performance of LLVM 14 vs LLVM 13
- 2022-09-21: Performance of LLVM 15 vs LLVM 14
- 2022-10-04: Performance of GCC 12 vs GCC 11
- 2023-09-28: Performance of LLVM 16 vs LLVM 15
- 2023-10-10: Performance of LLVM 17 vs LLVM 16