Files
versioned-map/README.md
2024-06-03 14:50:49 -07:00

48 lines
2.2 KiB
Markdown

feature | weaselab | fdb |
|-|-|-|
|based on|node-copying treap|node-copying treap|
|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,537.31 | 650,485.22 | 2.0% | 0.21 | `monotonically increasing`
| 1.25 | 798,963,102.97 | 0.1% | 0.01 | `*iter`
| 38.71 | 25,831,420.46 | 3.2% | 0.01 | `++iter`
| 37.31 | 26,801,664.98 | 0.3% | 0.01 | `--iter`
| 133.17 | 7,508,978.37 | 2.8% | 0.02 | `begin`
| 129.51 | 7,721,547.35 | 0.4% | 0.02 | `begin (firstGeq)`
| 54.40 | 18,381,173.00 | 1.2% | 0.01 | `end`
| 245.34 | 4,075,961.09 | 1.1% | 0.01 | `bulkFirstGeq`
## fdb
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 2,244.65 | 445,503.99 | 1.3% | 0.29 | `monotonically increasing`
| 2.06 | 486,311,738.92 | 0.3% | 0.01 | `*iter`
| 12.53 | 79,826,977.13 | 0.4% | 0.01 | `++iter`
| 8.86 | 112,927,293.80 | 1.3% | 0.01 | `--iter`
| 89.27 | 11,201,505.02 | 0.7% | 0.01 | `begin`
| 144.38 | 6,926,060.07 | 2.9% | 0.02 | `begin (firstGeq)`
| 71.84 | 13,920,283.88 | 0.4% | 0.01 | `end`
| 412.10 | 2,426,597.75 | 0.2% | 0.01 | `bulkFirstGeq`