andrew
|
588e8eb87f
|
Add monotonic increasing point writes workload
|
2024-02-23 16:13:53 -08:00 |
|
andrew
|
df8d092a84
|
Avoid some unnecessary work
|
2024-02-23 14:49:42 -08:00 |
|
andrew
|
438a2e2abc
|
Make sure setOldestVersion has work to do in bench
|
2024-02-23 14:41:05 -08:00 |
|
andrew
|
305c218888
|
Skip checking for partial key match if partial key len == 0
This saves instructions according to cachegrind
|
2024-02-23 14:27:20 -08:00 |
|
andrew
|
db60782c48
|
Use **self directly in insert
|
2024-02-23 14:09:04 -08:00 |
|
andrew
|
4f32ecc26e
|
Make "begin" a template parameter to insert
cachegrind says this saves instructions
|
2024-02-23 14:00:55 -08:00 |
|
andrew
|
f84aa88202
|
Copy old node to new more efficiently
Presumably it's generating good code for the memcpy with a static size,
and hopefully also eliminating redundant stores
|
2024-02-23 13:31:05 -08:00 |
|
andrew
|
921da1cb3f
|
Remove redundant code
|
2024-02-23 13:13:48 -08:00 |
|
andrew
|
14de4ee297
|
Specialize setChildrenParents for each node type
cachegrind says this increases the instruction count somehow. I'm not
sure what's going on there.
|
2024-02-23 13:09:42 -08:00 |
|
andrew
|
7136b5a450
|
Save more instructions in getOrCreateChild
Take advantage of the property that Node4 is a prefix of Node16
|
2024-02-23 12:39:24 -08:00 |
|
andrew
|
116c79d3de
|
Optimize getOrCreateChild
Add fast path for if it exists
Avoid some unnecessary branches
Try to simplify some
|
2024-02-23 12:34:28 -08:00 |
|
andrew
|
aaf0283f66
|
Prefer getChild to getChildGeq in happy path
Saves instructions according to cachegrind
|
2024-02-23 12:12:01 -08:00 |
|
andrew
|
259f47664a
|
Save some instructions in getOrCreateChild
|
2024-02-22 22:46:08 -08:00 |
|
andrew
|
9a47f2d03a
|
Fixed missed usages of longestCommonPrefixPartialKey
|
2024-02-22 16:24:26 -08:00 |
|
andrew
|
b5d5085fd5
|
Add precondition back to firstNeqStride
|
2024-02-22 16:16:42 -08:00 |
|
andrew
|
40dca168ba
|
Add precondition to longestCommonPrefixPartialKey
|
2024-02-22 16:07:20 -08:00 |
|
andrew
|
7a8233ac61
|
More unnesting
|
2024-02-22 15:50:54 -08:00 |
|
andrew
|
3c93b9a3ce
|
Unnest some in checkPointRead
|
2024-02-22 15:43:13 -08:00 |
|
andrew
|
c16feda9f8
|
Use longestCommonPrefixPartialKey in SearchStepWise
|
2024-02-22 15:41:39 -08:00 |
|
andrew
|
4c3e7aef30
|
Save a few instructions in SearchStepWise
|
2024-02-22 15:30:24 -08:00 |
|
andrew
|
7f5598af2b
|
Save a few instructions in addWriteRange
|
2024-02-22 15:25:50 -08:00 |
|
andrew
|
8016d44c04
|
Use simple loop for longestCommonPrefixPartialKey
The benchmark has this as faster
|
2024-02-22 14:49:04 -08:00 |
|
andrew
|
505c060a28
|
Use longestCommonPrefixPartialKey in insert
|
2024-02-22 14:46:52 -08:00 |
|
andrew
|
608b4fb6c7
|
Remove some branches
|
2024-02-22 14:29:24 -08:00 |
|
andrew
|
0fbc8b0190
|
Use longestCommonPrefix on partial keys
|
2024-02-22 13:57:00 -08:00 |
|
andrew
|
125ce88268
|
Suppress gcc warning
Accept that our usage is non-portable: https://stackoverflow.com/questions/3129916/what-is-wrong-with-this-use-of-offsetof
|
2024-02-22 12:37:14 -08:00 |
|
andrew
|
3a5db2d2ac
|
Share some Node4/16 and Node48/256 implementations
This cuts down on the number of instructions (confirmed with
cachegrind). Also avoid initializing some memory unnecessarily.
|
2024-02-22 12:31:10 -08:00 |
|
andrew
|
bd5d0259d9
|
Update corpus
|
2024-02-21 22:13:57 -08:00 |
|
andrew
|
09782ba833
|
Fix O(k^2) behavior when begin is a prefix of end
|
2024-02-21 20:11:37 -08:00 |
|
andrew
|
0cb16c384f
|
Fix include path
|
2024-02-21 16:48:33 -08:00 |
|
andrew
|
3750aa7b5b
|
Vendor valgrind headers
This is encouraged according to https://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.clientreq
|
2024-02-21 16:15:40 -08:00 |
|
andrew
|
28e61340f4
|
Add valgrind annotations
This appears to affect the binary (how else could it possibly work??),
but the microbenchmarks don't show a difference
|
2024-02-21 15:58:01 -08:00 |
|
andrew
|
07839b4687
|
Fix class-memaccess warning
The lifetime of T ended, so it's appropriate to treat it as a void*
|
2024-02-21 15:27:46 -08:00 |
|
andrew
|
ed29ea0e61
|
Fix fdb-patch.txt
Turns out the include path was wrong it only worked before accidentally
|
2024-02-21 15:23:10 -08:00 |
|
andrew
|
af269ff208
|
Use a free list
malloc and free were showing up in profiles of fdbserver
|
2024-02-21 13:51:02 -08:00 |
|
andrew
|
7e6652003b
|
Remove vestigial arena
|
2024-02-21 12:06:57 -08:00 |
|
andrew
|
48d96ac79a
|
Only pass key to addPointWrite
|
2024-02-20 23:16:03 -08:00 |
|
andrew
|
a341b36f63
|
Detect singleton key ranges
|
2024-02-20 23:09:03 -08:00 |
|
andrew
|
e706aad989
|
Remove byteswap include
|
2024-02-20 16:01:20 -08:00 |
|
andrew
|
4cbbeab55d
|
Remove dead code
|
2024-02-20 15:30:07 -08:00 |
|
andrew
|
06f92722f0
|
Add license
|
2024-02-20 13:22:22 -08:00 |
|
andrew
|
b82885e4c4
|
Add fdb patch
|
2024-02-20 13:15:37 -08:00 |
|
andrew
|
1efc787805
|
Add README.md
|
2024-02-20 13:13:48 -08:00 |
|
andrew
|
ae5277bf78
|
Interleave checking left and right side
|
2024-02-20 11:28:58 -08:00 |
|
andrew
|
c4e18d71a2
|
CheckRangeRightSide struct
|
2024-02-20 11:12:10 -08:00 |
|
andrew
|
33390af817
|
CheckRangeLeftSide struct
|
2024-02-20 11:04:12 -08:00 |
|
andrew
|
79987a2f55
|
Fix use of uninitialized memory
|
2024-02-19 16:48:40 -08:00 |
|
andrew
|
01a29b69b1
|
Explain assert
|
2024-02-19 16:25:15 -08:00 |
|
andrew
|
cb2f66b4b7
|
Remove a check from setOldestVersion
|
2024-02-19 16:20:04 -08:00 |
|
andrew
|
c9baa80212
|
Implement setOldestVersion
|
2024-02-19 15:58:59 -08:00 |
|