andrew
|
782abc70d6
|
Remove custom allocator
To prepare for variable size partial keys
|
2024-03-08 13:02:33 -08:00 |
|
andrew
|
8802d17acd
|
Remove Node::Invalid
|
2024-03-08 12:57:06 -08:00 |
|
andrew
|
02afd47d8f
|
Node1 -> Node0
|
2024-03-08 12:07:47 -08:00 |
|
andrew
|
87dd70c4b6
|
Fix bug introduced in 5e1fb1dac5
|
2024-03-07 17:43:34 -08:00 |
|
andrew
|
a8042ab20d
|
Simplify firstGeq - make it not stepwise
|
2024-03-07 16:05:38 -08:00 |
|
andrew
|
1519216d08
|
Replace is_pod_v with is_trivial_v
|
2024-03-07 14:26:01 -08:00 |
|
andrew
|
f2cd05c29d
|
Move Node::type to beginning of Node
This prepares us to have a variable size leaf type
|
2024-03-07 14:17:14 -08:00 |
|
andrew
|
5e1fb1dac5
|
Use entry bytes in partial key if entry not present
Closes #8
|
2024-03-07 13:47:37 -08:00 |
|
andrew
|
d1a6b293e9
|
Revert "Add getChildNodeGeq, use in nextLogical"
This reverts commit 53bc36f628.
Apparently this used more instructions. Not sure I understand.
|
2024-03-07 12:41:34 -08:00 |
|
andrew
|
be43143891
|
Tidying
|
2024-03-07 12:33:34 -08:00 |
|
andrew
|
53bc36f628
|
Add getChildNodeGeq, use in nextLogical
|
2024-03-07 12:12:02 -08:00 |
|
andrew
|
be5f1b67c8
|
Interface change! addWrites now takes a single write version
|
2024-03-05 16:55:27 -08:00 |
|
andrew
|
ec3aec4dff
|
Assume writeVersion highest-ever to avoid max calculation
This is measurably faster
|
2024-03-05 16:06:50 -08:00 |
|
andrew
|
760a99098a
|
Improve coverage slightly
By moving test-only code to a test-only region. Also the skip_list
shared lib can depend on libstdc++ etc.
|
2024-03-04 17:04:06 -08:00 |
|
andrew
|
e6a88852b3
|
Add comment explaining interface of maxBetweenExclusive
|
2024-03-04 16:47:30 -08:00 |
|
andrew
|
a4b03bc216
|
Add example augmented radix tree figure
|
2024-02-29 16:35:07 -08:00 |
|
andrew
|
68bd39e130
|
Put skip list in its own shared lib
Now we can right benchmarks against one api, and just change the library
path
|
2024-02-27 12:02:01 -08:00 |
|
andrew
|
25a1226667
|
Fix setOldestVersion bug
We should update the oldest version even if we don't have enough
keyUpdates to do
|
2024-02-27 10:59:59 -08:00 |
|
andrew
|
f38198a39d
|
Amortize cost of pausing gc in setOldestVersion
|
2024-02-26 19:23:29 -08:00 |
|
andrew
|
3f45535f89
|
Fix setOldestVersion
We were not accumulating keyUpdates strictly faster than we were
spending them for a monotonically increasing workload.
|
2024-02-26 13:51:03 -08:00 |
|
andrew
|
2b0dbabb5c
|
Add public showMemory symbol (when SHOW_MEMORY=1)
|
2024-02-26 13:48:20 -08:00 |
|
andrew
|
be7f643f14
|
Add Node1 and SHOW_MEMORY
|
2024-02-26 12:25:06 -08:00 |
|
andrew
|
6a08bdd40e
|
Add bitSet asserts for Node256 paths
|
2024-02-26 10:58:16 -08:00 |
|
andrew
|
333ac74d91
|
Use forEachInRange for overfill for Node48
|
2024-02-26 10:55:50 -08:00 |
|
andrew
|
17ac9b38fb
|
Use forEachInRange in setChildrenParents
|
2024-02-26 10:37:28 -08:00 |
|
andrew
|
172dd40648
|
Check for full words on boundaries
|
2024-02-26 10:36:45 -08:00 |
|
andrew
|
c97c7eee8e
|
Speed up sparse queries
|
2024-02-25 23:08:01 -08:00 |
|
andrew
|
9fcfc44dc3
|
Add forEachInRange
|
2024-02-25 21:04:39 -08:00 |
|
andrew
|
0d3475e229
|
Use uint64_t array and fewer branches in BitSet
|
2024-02-24 18:20:00 -08:00 |
|
andrew
|
adaa652d0d
|
Remove Node::maxVersion
|
2024-02-23 17:27:19 -08:00 |
|
andrew
|
921005edb3
|
Add childMaxVersion
|
2024-02-23 17:02:46 -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 |
|