fcb881f4085327da46f6185d25e27d000a800bf8
Only implemented for forward reads so far
Not ready for use!
| feature | weaselab | fdb |
|---|---|---|
| based on | node-copying treap | node-copying treap |
branch-free child function |
✅ | ❌ |
| bytes per node (worst-case) | 64 + kv len + 1* | 96 + kv len |
| cheaper iteration | ❌* | ✅ |
| efficient bulk queries | ✅ | ❌ |
| entries per set (worst-case) | 1 | 3 |
| memory-usage (rough) | 40% | 100% |
| node gc | mark-and-sweep | reference-counting |
| pointer size | 32-bit | 64-bit |
| purge strategy | scan | search |
| read from foreign thread | ✅ | ❌ |
| recursion-free | ✅ | ❌ |
| returns node memory to OS | ✅ | ❌ |
| searches per point clear | 1 | 5 |
| searches per range clear | 2 | 5 |
| searches per set (worst-case) | 1 | 4 |
* Part of a set of tradeoffs that enable 1 entry per set worst-case
benchmarks
weaselab
| ns/op | op/s | err% | total | benchmark |
|---|---|---|---|---|
| 1,225.88 | 815,738.46 | 0.7% | 0.31 | monotonically increasing |
| 1.27 | 785,633,468.91 | 0.2% | 0.01 | *iter |
| 29.18 | 34,265,322.00 | 0.4% | 0.01 | ++iter |
| 30.55 | 32,729,535.46 | 0.6% | 0.01 | --iter |
| 155.38 | 6,435,768.30 | 0.4% | 0.04 | begin |
| 181.88 | 5,498,125.78 | 0.5% | 0.04 | begin (firstGeq) |
| 46.29 | 21,603,059.16 | 0.3% | 0.01 | end |
| 169.68 | 5,893,481.63 | 0.1% | 0.10 | bulkFirstGeq |
| 162.61 | 6,149,704.63 | 0.1% | 0.10 | bulkFirstGeq (latest version) |
fdb
| ns/op | op/s | err% | total | benchmark |
|---|---|---|---|---|
| 2,237.52 | 446,923.66 | 0.6% | 0.56 | monotonically increasing |
| 2.07 | 484,208,685.89 | 0.6% | 0.01 | *iter |
| 9.91 | 100,926,329.70 | 0.5% | 0.01 | ++iter |
| 11.36 | 88,023,104.91 | 0.3% | 0.01 | --iter |
| 87.70 | 11,402,839.76 | 0.2% | 0.02 | begin |
| 110.58 | 9,043,264.46 | 0.2% | 0.03 | begin (firstGeq) |
| 67.30 | 14,859,247.22 | 0.3% | 0.02 | end |
| 411.72 | 2,428,853.18 | 0.1% | 0.25 | bulkFirstGeq |
| 350.54 | 2,852,725.55 | 0.1% | 0.21 | bulkFirstGeq (latest version) |
Description
Languages
C++
93.5%
CMake
5.7%
C
0.6%
Shell
0.2%