andrew
|
c20c08f112
|
Use homebrew clang for packaging for macos
The default segfaults now for some reason
|
2024-08-08 11:06:26 -07:00 |
|
andrew
|
ac98d4a443
|
Remove always_inline attribute - it wasn't affecting codegen
|
2024-08-08 10:44:54 -07:00 |
|
andrew
|
1d9e8ab68b
|
Add missing test coverage for fixupMaxVersion for Node256
|
2024-08-07 17:02:19 -07:00 |
|
andrew
|
7d86beb14c
|
Revert 29c05187fb
We're already doing this in checkRangeStartsWith
|
2024-08-07 16:51:23 -07:00 |
|
andrew
|
2fa954ed36
|
Fix compiler warning
|
2024-08-07 16:25:49 -07:00 |
|
andrew
|
ded6e7fc2c
|
Require entry present for fixupMaxVersion
|
2024-08-06 17:59:38 -07:00 |
|
andrew
|
781ba15cae
|
Enforce that root does not have a partial key
|
2024-08-06 17:55:33 -07:00 |
|
andrew
|
9b56a74b2f
|
Update corpus
|
2024-08-06 17:43:48 -07:00 |
|
andrew
|
6da9cbdec9
|
Update benchmarks
|
2024-08-06 16:07:16 -07:00 |
|
andrew
|
29c05187fb
|
Early return if common prefix isn't a prefix of an entry
For range reads
|
2024-08-06 15:32:44 -07:00 |
|
andrew
|
d89028dd2f
|
Inline SearchStepWise into checkRangeRead
This improves clang codegen
|
2024-08-06 14:45:52 -07:00 |
|
andrew
|
09cf807747
|
Avoid some branches on node type while inserting
|
2024-08-06 13:51:49 -07:00 |
|
andrew
|
051eb5919d
|
Extract consumePartialKey to its own function
|
2024-08-06 13:20:44 -07:00 |
|
andrew
|
ed5589e4ed
|
Specialize partial key split for newly created Node3
|
2024-08-06 13:04:19 -07:00 |
|
andrew
|
a7b3d8fe4c
|
Clarify insert documentation
|
2024-08-06 11:29:33 -07:00 |
|
andrew
|
c3a047fdf8
|
Handle newly-created node partial key immediately
|
2024-08-06 09:22:21 -07:00 |
|
andrew
|
b4b469a175
|
Use maxOfMax in fixupMaxVersion
|
2024-08-05 21:41:49 -07:00 |
|
andrew
|
0201e27498
|
Remove redundant setMaxVersion calls
|
2024-08-05 19:29:38 -07:00 |
|
andrew
|
2010920a2c
|
Correct comment
|
2024-08-05 19:28:24 -07:00 |
|
andrew
|
19af8da65c
|
Fix endNode's max version after the fact
This sets us up to unconditionally update the max version along the
search path for inserts, and avoid dispatching on type twice per
iteration.
|
2024-08-05 17:50:26 -07:00 |
|
andrew
|
80785e3c3b
|
Avoid switch on parent type for max version during search
|
2024-08-05 16:40:58 -07:00 |
|
andrew
|
4580ee44b4
|
Add range reads to ServerBench
|
2024-08-05 15:44:13 -07:00 |
|
andrew
|
2d3985ca40
|
Add a simple point read/write workload to ServerBench
|
2024-08-05 14:37:00 -07:00 |
|
andrew
|
c8be68db40
|
Add ServerBench.cpp
|
2024-08-05 12:20:38 -07:00 |
|
andrew
|
f5d021d6b6
|
Add multi-version rezero16
|
2024-08-03 14:22:50 -07:00 |
|
andrew
|
1c41605b53
|
Use std::countr_zero instead of __builtin_ctz
Doesn't seem to affect codegen in these cases.
|
2024-08-03 10:01:12 -07:00 |
|
andrew
|
8f03a105bb
|
Use target avx512f,avx512bw
Appears to fix gcc build
|
2024-08-02 21:47:23 -07:00 |
|
andrew
|
0e574856be
|
Make checkMaxBetweenExclusive a multi-version function
This introduces more branches but reduces code size
|
2024-08-02 21:09:55 -07:00 |
|
andrew
|
493a6572ad
|
Only exclude avx512-targeted functions from coverage
|
2024-08-02 20:53:30 -07:00 |
|
andrew
|
abce4591d0
|
Fix preprocessor guard for avx512 longestCommonPrefix
|
2024-08-02 20:46:32 -07:00 |
|
andrew
|
d1dc1247e1
|
Switch to new machine for benchmarks
|
2024-08-02 18:18:36 -07:00 |
|
andrew
|
f1ad68109a
|
Skip lcp call in SearchStepWise if no partial key
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
c4443bc355
|
Remove len < 8 check in longestCommonPrefix
Micro benchmarks look a tiny bit better /shrug
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
857b402fe2
|
Add an avx512bw longestCommonPrefix
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
9b3e1b219b
|
Remove small memmoves in erase
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
ab52c63935
|
Move local accum's into ReadContext
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
bad9d7ced8
|
Avoid some tls lookups for InternalVersionT::zero
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
c8d9dc034d
|
Remove memmove call for inserting into Node16
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
72168ef6a3
|
Avoid memmove when inserting into Node3
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
620a0afd2a
|
Add debug symbols and frame pointer
So that perf works out of the box. Leave it in the release artifacts/do
whatever cpack does by default for now.
|
2024-08-02 18:16:55 -07:00 |
|
andrew
|
b0414969be
|
Update README.md
Benchmarks haven't been updated since adding metrics
|
2024-08-01 16:43:15 -07:00 |
|
andrew
|
1673e1c0dd
|
Enforce 100% line coverage again. Closes #30
|
2024-08-01 16:03:17 -07:00 |
|
andrew
|
7351b6e417
|
More gcovr exclusions for function multi-versioning
|
2024-08-01 15:53:38 -07:00 |
|
andrew
|
561ed45e3e
|
Show missing coverage lines in console output
|
2024-08-01 15:43:09 -07:00 |
|
andrew
|
ca804f28c0
|
Get back to 100% line coverage locally
|
2024-08-01 15:31:38 -07:00 |
|
andrew
|
3898cb596a
|
Use _mm512_loadu_epi32 instead of memcpy
The latter somehow generated a vmovdqa64 instruction that segfaulted on
unaligned memory, with gcc and --coverage. Hmm.
|
2024-08-01 15:24:09 -07:00 |
|
andrew
|
b8edd92698
|
Fix warning
|
2024-08-01 15:23:43 -07:00 |
|
andrew
|
8e480528d5
|
Update corpus
|
2024-08-01 14:56:36 -07:00 |
|
andrew
|
4113183155
|
Attempt to fix likely arm bug
|
2024-08-01 14:01:41 -07:00 |
|
andrew
|
adb8fdc5e9
|
Simplify nextPhysical
|
2024-08-01 14:00:02 -07:00 |
|
andrew
|
c86e407985
|
Return Node from getChildGeq
It seems all callers ultimately want this
|
2024-08-01 13:53:18 -07:00 |
|
andrew
|
71a84057cb
|
Find two more call sites for getFirstChildExists
|
2024-08-01 13:37:44 -07:00 |
|
andrew
|
9c5e5863c2
|
Simplify remaining "down left spine" loops
|
2024-08-01 13:17:33 -07:00 |
|
andrew
|
be67555756
|
Simplify more "down left spine" loops
|
2024-08-01 13:13:55 -07:00 |
|
andrew
|
988ec5ce69
|
Add getFirstChildExists
|
2024-08-01 13:05:40 -07:00 |
|
andrew
|
f5a0d81c52
|
Remove some redundant branches
I think they were getting optimized out, but still
|
2024-08-01 12:37:57 -07:00 |
|
andrew
|
3b2bd16cd1
|
Add overloads of getChild for each type
|
2024-08-01 11:42:55 -07:00 |
|
andrew
|
4b3df0a426
|
Avoid dispatching on node type twice in nextPhysical
|
2024-08-01 10:46:08 -07:00 |
|
andrew
|
4cdf6deb50
|
Remove a branch in happy path in addWrites
|
2024-08-01 10:28:50 -07:00 |
|
andrew
|
f21dde06d3
|
Group write metric accumulators into a struct
|
2024-07-31 21:45:20 -07:00 |
|
andrew
|
2b11650589
|
Update aarch64 import symbols
|
2024-07-31 17:34:30 -07:00 |
|
andrew
|
fce998460f
|
Use int64_t internally for metrics
So we can use fetch_add
|
2024-07-31 14:41:42 -07:00 |
|
andrew
|
6da3125719
|
Remove everything wasm-related
I'm not interested in supporting wasm at this time
|
2024-07-31 14:04:10 -07:00 |
|
andrew
|
79410d071f
|
Add accidentally-deleted corpus back
|
2024-07-26 14:57:04 -07:00 |
|
andrew
|
1fcca6450d
|
Fix point writes accounting
Previously it wouldn't count a singleton range write
|
2024-07-26 14:41:54 -07:00 |
|
andrew
|
55271ad06c
|
Update corpus
To match new "interleaving" test setup
|
2024-07-23 16:54:03 -07:00 |
|
andrew
|
e675612599
|
Suppress some warnings in test code
|
2024-07-23 16:50:02 -07:00 |
|
andrew
|
42b5d50492
|
Update DEBUG_VERBOSE for interleaving conflict sets in test
|
2024-07-23 15:44:29 -07:00 |
|
andrew
|
6394995def
|
Add a test where the "zero" bug causes an incorrect commit
|
2024-07-23 14:39:45 -07:00 |
|
andrew
|
c649bc7964
|
Interleave calls for two conflict sets in tests
|
2024-07-23 11:12:02 -07:00 |
|
andrew
|
ec85a06d01
|
Bump version
|
2024-07-22 17:25:38 -07:00 |
|
andrew
|
fb9f5ce6f4
|
Update InternalVersionT::zero in addWrite call
There can be other conflict sets in the same thread
|
2024-07-22 16:14:25 -07:00 |
|
andrew
|
2b1c710953
|
Add noop getMetricsV1 to HashTable.cpp
|
2024-07-19 11:25:12 -07:00 |
|
andrew
|
ebf281220b
|
Add NOLINT for new clangd warning about sizeof pointer
|
2024-07-19 11:24:37 -07:00 |
|
andrew
|
6051b2fb2e
|
Remove benchMetrics
It's not all that interesting in the end
|
2024-07-19 11:24:01 -07:00 |
|
andrew
|
11c3ca6766
|
Add oldest_extant_version metric
|
2024-07-18 14:19:11 -07:00 |
|
andrew
|
b45dec2f1f
|
Add point_writes_total and range_writes_total
|
2024-07-18 14:00:57 -07:00 |
|
andrew
|
c5e9f18c47
|
Remove some unnecessary std::exchange's
|
2024-07-17 18:57:12 -07:00 |
|
andrew
|
cebbf89cbe
|
Fix build for x86
|
2024-07-17 18:47:12 -07:00 |
|
andrew
|
abb791d86b
|
Just use a normal && in a place where being branch-free isn't a big deal
|
2024-07-17 18:21:33 -07:00 |
|
andrew
|
12f361f33a
|
Don't plumb impl and ReadContext
|
2024-07-17 18:20:08 -07:00 |
|
andrew
|
640c1ca9dd
|
Fix issue with thread_local performance
|
2024-07-17 17:54:39 -07:00 |
|
andrew
|
b7d54d44e1
|
Add oldest version and newest version metrics
|
2024-07-17 16:42:46 -07:00 |
|
andrew
|
95596f831f
|
Add some metrics for addWrites and setOldestVersion
|
2024-07-17 16:35:29 -07:00 |
|
andrew
|
542371d562
|
Build TestDriver for perf testing too
|
2024-07-17 15:48:32 -07:00 |
|
andrew
|
958a4e2d0e
|
Strengthen metric name structure according to Prometheus guidance
|
2024-07-16 18:59:42 -07:00 |
|
andrew
|
8ce14c58a4
|
Print metrics for blackbox tests
|
2024-07-16 16:46:57 -07:00 |
|
andrew
|
56e847b63c
|
Experiment with CLOCK_THREAD_CPUTIME_ID
|
2024-07-15 21:34:22 -07:00 |
|
andrew
|
7fd1c9e140
|
Make range_read_iterations_total consistent with others
|
2024-07-15 17:23:48 -07:00 |
|
andrew
|
ebaac253e2
|
Don't count loop entry as an "iteration"
|
2024-07-15 14:46:57 -07:00 |
|
andrew
|
9b470a367c
|
Add check_bytes_total counter
|
2024-07-15 14:40:22 -07:00 |
|
andrew
|
e7806a36d1
|
Fix range_read_total counter
It was overcounting
|
2024-07-15 14:09:31 -07:00 |
|
andrew
|
ffd1dfe74d
|
Rework check metrics
{point,prefix,range} x {count,iterations,short_circuits} + node scans
|
2024-07-15 14:02:39 -07:00 |
|
andrew
|
c39af9117f
|
Remove nodes allocated/released metrics
|
2024-07-15 13:34:13 -07:00 |
|
andrew
|
ed274c24d7
|
Just output metrics in the order declared
|
2024-07-12 16:10:28 -07:00 |
|
andrew
|
cecfcc0da7
|
Fix build
|
2024-07-12 14:52:42 -07:00 |
|
andrew
|
f6edde0e50
|
Fix data race
|
2024-07-12 14:49:46 -07:00 |
|
andrew
|
04ac41a7e7
|
Add memory usage and some "check" metrics
|
2024-07-12 14:22:16 -07:00 |
|
andrew
|
354920f86f
|
Add newly-imported symbol for arm64 build
|
2024-07-12 13:55:41 -07:00 |
|
andrew
|
bfd02503e7
|
Remove duplicate clang compiler warning action
|
2024-07-12 13:44:51 -07:00 |
|