Commit Graph

549 Commits

Author SHA1 Message Date
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
Tests / Release [gcc] total: 471, passed: 471
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/35//gcc">weaselab » conflict-set » main #35</a>
Tests / Coverage total: 469, passed: 469
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-22 22:46:08 -08:00
andrew 9a47f2d03a Fixed missed usages of longestCommonPrefixPartialKey
Tests / Release [gcc] total: 471, passed: 471
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/34//gcc">weaselab » conflict-set » main #34</a>
Tests / Coverage total: 469, passed: 469
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 471, passed: 471
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/33//gcc">weaselab » conflict-set » main #33</a>
Tests / Coverage total: 469, passed: 469
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/32//gcc">weaselab » conflict-set » main #32</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/31//gcc">weaselab » conflict-set » main #31</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/30//gcc">weaselab » conflict-set » main #30</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|4|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/29//gcc">weaselab » conflict-set » main #29</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |4|0|4|0|:zzz: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/28//gcc">weaselab » conflict-set » main #28</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |4|4|0|0|:-1: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/27//gcc">weaselab » conflict-set » main #27</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/26//gcc">weaselab » conflict-set » main #26</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-20 23:16:03 -08:00
andrew a341b36f63 Detect singleton key ranges
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/25//gcc">weaselab » conflict-set » main #25</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-20 23:09:03 -08:00
andrew e706aad989 Remove byteswap include
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/24//gcc">weaselab » conflict-set » main #24</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-20 16:01:20 -08:00
andrew 4cbbeab55d Remove dead code
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/23//gcc">weaselab » conflict-set » main #23</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-20 15:30:07 -08:00
andrew 06f92722f0 Add license
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/22//gcc">weaselab » conflict-set » main #22</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-20 13:22:22 -08:00
andrew b82885e4c4 Add fdb patch
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/21//gcc">weaselab » conflict-set » main #21</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/20//gcc">weaselab » conflict-set » main #20</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
Tests / Release [gcc] total: 583, passed: 583
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/19//gcc">weaselab » conflict-set » main #19</a>
Tests / Coverage total: 581, passed: 581
weaselab/conflict-set/pipeline/head This commit looks good
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
andrew 939b791e01 Paper tinkering 2024-02-19 13:29:16 -08:00
andrew deb85f5645 Add callgrind client requests 2024-02-18 20:11:33 -08:00
andrew 69ce3e2a20 Update project description 2024-02-18 19:47:54 -08:00
andrew 79390b806c Don't repeat common prefix search in addWriteRange
Tests / Release [gcc] total: 423, passed: 423
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/18//gcc">weaselab » conflict-set » main #18</a>
Tests / Coverage total: 421, passed: 421
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-18 10:43:41 -08:00
andrew cb31f4c25b Fix bugs
Tests / Release [gcc] total: 423, passed: 423
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/17//gcc">weaselab » conflict-set » main #17</a>
Tests / Coverage total: 421, passed: 421
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-17 22:09:00 -08:00
andrew 9a72f133a9 Add prefix queries to bench 2024-02-16 21:42:04 -08:00
andrew 0799aea3e8 Move newly test-only code 2024-02-16 18:35:28 -08:00
andrew 69a1b9099d Share common prefix search in addWriteRange 2024-02-16 17:50:21 -08:00