weaselbot
63f9a139da
Fix undefined behavior on empty input in strinc() and prefixRange()
...
CI / pre-commit (pull_request) Successful in 2m5s
CI / release (arm64, ubuntu-latest-arm64) (pull_request) Successful in 3m29s
CI / test (-DCMAKE_BUILD_TYPE=Debug, debug) (pull_request) Successful in 3m34s
CI / test (-DCMAKE_CXX_FLAGS=-DUSE_64_BIT=1, 64-bit-versions) (pull_request) Successful in 3m28s
CI / test (-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++, gcc) (pull_request) Successful in 3m38s
CI / test (-DUSE_SIMD_FALLBACK=ON, simd-fallback) (pull_request) Successful in 3m27s
CI / release (amd64, ubuntu-latest-amd64) (pull_request) Successful in 4m51s
CI / coverage (pull_request) Successful in 3m37s
strinc() in ConflictSet.cpp used std::string_view::size() (size_t) and subtracted 1 without first checking for an empty string. For the root node, getSearchPath() returns the empty string, so every debug correctness check underflowed size_t and relied on implementation-defined conversion to signed int.
prefixRange() in Bench.cpp had the same loop shape. Although TrivialSpan::size() returns int, on an empty (or all-0xff) key the function then asserted and continued executing, allocating a zero-length buffer and writing before its start.
Changes:
- In strinc(), initialize index as signed int(str.size()) - 1 so the loop is skipped for empty input, and return ok=false cleanly.
- In prefixRange(), initialize index the same way and call std::abort() after the assert so invalid input cannot fall through to an out-of-bounds write.
- Replace C-style uint8_t casts with explicit static_casts.
Closes #59
2026-06-29 13:52:02 -04:00
andrew
a158d375f5
Add script for updating readme
2024-11-18 14:05:14 -08:00
andrew
3b858551f3
Switch std::span<const uint8_t> to TrivialSpan
2024-10-30 11:45:56 -07:00
andrew
54c7ccb96b
Allow for easily increasing number of range reads
...
For worst case for radix tree benchmark
2024-10-11 21:20:45 -07:00
andrew
a0a4f1afea
Only compile nanobench once
2024-09-09 20:10:55 -07:00
andrew
6051b2fb2e
Remove benchMetrics
...
It's not all that interesting in the end
2024-07-19 11:24:01 -07:00
andrew
3288c583e4
Make metrics thread-safe
...
Tests / Clang total: 1533, failed: 1, passed: 1532
Tests / Clang - debug total: 1531, passed: 1531
Tests / SIMD fallback total: 1533, failed: 1, passed: 1532
Tests / Release [gcc] total: 1533, failed: 1, passed: 1532
Tests / Release [gcc,aarch64] total: 1144, failed: 2, passed: 1142
Tests / Coverage total: 1151, passed: 1151
weaselab/conflict-set/pipeline/head There was a failure building this commit
Even concurrently with calling non-const methods on the associated
ConflictSet
2024-07-12 13:22:02 -07:00
andrew
3ac16bc966
Propose a metrics interface
Tests / Clang total: 1533, failed: 2, passed: 1531
Tests / SIMD fallback total: 1533, failed: 2, passed: 1531
Tests / Release [gcc] total: 1533, failed: 2, passed: 1531
Tests / Release [gcc,aarch64] total: 1144, failed: 2, passed: 1142
Tests / Coverage total: 1151, passed: 1151
weaselab/conflict-set/pipeline/head There was a failure building this commit
2024-07-12 12:00:46 -07:00
andrew
13f8d3fa8a
Add benchmarks for individual spans, but commented out
2024-06-26 20:57:51 -07:00
andrew
23ace8aac5
Fill in leftward on right side in worst case for radix tree bench
2024-06-26 17:37:24 -07:00
andrew
bb9bc3d7b5
Measure across different cardinalities for radix worst case bench
2024-06-26 15:06:36 -07:00
andrew
76d0785b33
Add worst-case benchmark for radix tree
...
Closes #27
2024-06-25 20:50:22 -07:00
andrew
ab211c646a
Apply compiler-appeasing syntax changes from Taoxi
2024-03-28 14:57:31 -07:00
andrew
2fcf3da29f
Use a warmup instead
...
Seems more stable
2024-03-05 17:22:11 -08:00
andrew
c8495b1695
Drain all pending work in hashtable's setOldestVersion
2024-03-05 17:18:58 -08:00
andrew
d81d02f11d
Don't gc in write benchmarks
...
This makes it easier to evaluate the claim that "point writes are
comparable to point reads" in performance, which should be the case.
2024-03-05 17:09:28 -08:00
andrew
be5f1b67c8
Interface change! addWrites now takes a single write version
Tests / Release [gcc] total: 704, passed: 704
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/57//gcc">weaselab » conflict-set » main #57</a>
Tests / Release [gcc,aarch64] total: 703, passed: 703
Tests / Coverage total: 702, passed: 702
weaselab/conflict-set/pipeline/head This commit looks good
2024-03-05 16:55:27 -08:00
andrew
68bd39e130
Put skip list in its own shared lib
...
weaselab/conflict-set/pipeline/head There was a failure building this commit
Now we can right benchmarks against one api, and just change the library
path
2024-02-27 12:02:01 -08:00
andrew
2b0dbabb5c
Add public showMemory symbol (when SHOW_MEMORY=1)
2024-02-26 13:48:20 -08:00
andrew
588e8eb87f
Add monotonic increasing point writes workload
2024-02-23 16:13:53 -08:00
andrew
438a2e2abc
Make sure setOldestVersion has work to do in bench
2024-02-23 14:41:05 -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
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
c9baa80212
Implement setOldestVersion
2024-02-19 15:58:59 -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
d5bde56921
Range reads are slow with dense keys
Tests / Release [gcc] total: 363, passed: 363
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/13//gcc">weaselab » conflict-set » main #13</a>
Tests / Coverage total: 361, passed: 361
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-12 15:46:56 -08:00
andrew
ad14db5d7c
Add skiplist
2024-02-12 12:43:36 -08:00
andrew
d60da4c087
Add benchmark
Tests / Release [gcc] total: 363, passed: 363
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/12//gcc">weaselab » conflict-set » main #12</a>
Tests / Coverage total: 361, passed: 361
weaselab/conflict-set/pipeline/head This commit looks good
2024-02-11 09:26:03 -08:00
andrew
80a79aab1f
Still need a better way identify left/right sidedness
2024-02-09 15:17:37 -08:00
andrew
6be23803a3
Add standalone bench target
2024-02-06 15:03:54 -08:00