Update benchmarks after fixing skip list bug in a9b3d3d
Some checks failed
Tests / Clang total: 932, passed: 932
Clang |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap:
Tests / Release [gcc] total: 932, passed: 932
Tests / Release [gcc,aarch64] total: 931, failed: 309, passed: 622
Tests / Coverage total: 930, passed: 930
weaselab/conflict-set/pipeline/head There was a failure building this commit

This commit is contained in:
2024-03-14 15:50:55 -07:00
parent 6f81580953
commit 9cafef8bbb

108
README.md
View File

@@ -2,54 +2,56 @@ A data structure for optimistic concurrency control on ranges of bitwise-lexicog
Intended to replace FoundationDB's skip list. Intended to replace FoundationDB's skip list.
Hardware for all benchmarks is a mac m1 2020.
# FoundationDB's benchmark # FoundationDB's benchmark
## Skip list ## Skip list
``` ```
New conflict set: 2.404 sec New conflict set: 1.962 sec
0.520 Mtransactions/sec 0.637 Mtransactions/sec
2.080 Mkeys/sec 2.549 Mkeys/sec
Detect only: 2.266 sec Detect only: 1.853 sec
0.552 Mtransactions/sec 0.674 Mtransactions/sec
2.207 Mkeys/sec 2.698 Mkeys/sec
Skiplist only: 1.594 sec Skiplist only: 1.269 sec
0.784 Mtransactions/sec 0.985 Mtransactions/sec
3.137 Mkeys/sec 3.940 Mkeys/sec
Performance counters: Performance counters:
Build: 0.071 Build: 0.0526
Add: 0.0641 Add: 0.054
Detect: 2.27 Detect: 1.85
D.Sort: 0.44 D.Sort: 0.413
D.Combine: 0.018 D.Combine: 0.0148
D.CheckRead: 0.855 D.CheckRead: 0.678
D.CheckIntraBatch: 0.00903 D.CheckIntraBatch: 0.00679
D.MergeWrite: 0.739 D.MergeWrite: 0.591
D.RemoveBefore: 0.201 D.RemoveBefore: 0.147
``` ```
## Radix tree (this implementation) ## Radix tree (this implementation)
``` ```
New conflict set: 1.743 sec New conflict set: 1.342 sec
0.717 Mtransactions/sec 0.931 Mtransactions/sec
2.869 Mkeys/sec 3.726 Mkeys/sec
Detect only: 1.611 sec Detect only: 1.227 sec
0.776 Mtransactions/sec 1.018 Mtransactions/sec
3.103 Mkeys/sec 4.074 Mkeys/sec
Skiplist only: 0.919 sec Skiplist only: 0.576 sec
1.360 Mtransactions/sec 2.169 Mtransactions/sec
5.440 Mkeys/sec 8.676 Mkeys/sec
Performance counters: Performance counters:
Build: 0.0657 Build: 0.0568
Add: 0.0628 Add: 0.0564
Detect: 1.61 Detect: 1.23
D.Sort: 0.442 D.Sort: 0.414
D.Combine: 0.0178 D.Combine: 0.0162
D.CheckRead: 0.395 D.CheckRead: 0.228
D.CheckIntraBatch: 0.00776 D.CheckIntraBatch: 0.00665
D.MergeWrite: 0.524 D.MergeWrite: 0.348
D.RemoveBefore: 0.221 D.RemoveBefore: 0.211
``` ```
# Our benchmark # Our benchmark
@@ -58,25 +60,25 @@ Performance counters:
| ns/op | op/s | err% | total | benchmark | ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:---------- |--------------------:|--------------------:|--------:|----------:|:----------
| 270.07 | 3,702,706.03 | 0.4% | 0.01 | `point reads` | 254.17 | 3,934,426.23 | 0.3% | 0.01 | `point reads`
| 285.76 | 3,499,437.03 | 1.5% | 0.01 | `prefix reads` | 275.58 | 3,628,769.92 | 2.1% | 0.01 | `prefix reads`
| 532.54 | 1,877,794.90 | 0.7% | 0.01 | `range reads` | 494.87 | 2,020,718.51 | 0.7% | 0.01 | `range reads`
| 528.50 | 1,892,132.94 | 0.7% | 0.01 | `point writes` | 495.91 | 2,016,512.61 | 1.7% | 0.01 | `point writes`
| 516.53 | 1,935,978.22 | 0.9% | 0.01 | `prefix writes` | 478.11 | 2,091,578.00 | 0.8% | 0.01 | `prefix writes`
| 303.34 | 3,296,630.84 | 3.6% | 0.05 | `range writes` | 307.08 | 3,256,480.40 | 1.9% | 0.04 | `range writes`
| 502.88 | 1,988,553.24 | 2.0% | 0.01 | `monotonic increasing point writes` | 610.89 | 1,636,953.81 | 0.7% | 0.01 | `monotonic increasing point writes`
## Radix tree (this implementation) ## Radix tree (this implementation)
| ns/op | op/s | err% | total | benchmark | ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:---------- |--------------------:|--------------------:|--------:|----------:|:----------
| 14.52 | 68,850,842.99 | 1.2% | 0.01 | `point reads` | 22.39 | 44,667,832.17 | 0.2% | 0.01 | `point reads`
| 60.89 | 16,422,538.22 | 1.5% | 0.01 | `prefix reads` | 53.89 | 18,554,840.41 | 3.4% | 0.01 | `prefix reads`
| 226.89 | 4,407,362.98 | 0.5% | 0.01 | `range reads` | 217.71 | 4,593,220.24 | 0.2% | 0.01 | `range reads`
| 22.99 | 43,498,198.49 | 0.2% | 0.01 | `point writes` | 29.72 | 33,642,099.66 | 1.1% | 0.01 | `point writes`
| 50.51 | 19,799,864.54 | 1.0% | 0.01 | `prefix writes` | 44.86 | 22,294,037.02 | 0.8% | 0.01 | `prefix writes`
| 82.50 | 12,121,212.12 | 2.6% | 0.03 | `range writes` | 55.00 | 18,181,818.18 | 0.8% | 0.03 | `range writes`
| 119.94 | 8,337,354.54 | 2.1% | 0.01 | `monotonic increasing point writes` | 109.21 | 9,156,917.53 | 2.9% | 0.01 | `monotonic increasing point writes`
# "Real data" test # "Real data" test
@@ -85,13 +87,13 @@ Point queries only, best of three runs. Gc ratio is the ratio of time spent doin
## skip list ## skip list
``` ```
Check: 12.7863 seconds, 292.384 MB/s, Add: 19.8276 seconds, 35.4071 MB/s, Gc ratio: 23.5314% Check: 11.7282 seconds, 318.763 MB/s, Add: 5.76499 seconds, 121.776 MB/s, Gc ratio: 48.0772%
``` ```
## radix tree ## radix tree
``` ```
Check: 3.60187 seconds, 1037.94 MB/s, Add: 3.03958 seconds, 230.966 MB/s, Gc ratio: 52.3876% Check: 3.27475 seconds, 1141.62 MB/s, Add: 2.13594 seconds, 328.678 MB/s, Gc ratio: 50.1739%
``` ```
## hash table ## hash table
@@ -99,5 +101,5 @@ Check: 3.60187 seconds, 1037.94 MB/s, Add: 3.03958 seconds, 230.966 MB/s, Gc rat
(The hash table implementation doesn't work on range queries, and its purpose is to provide an idea of how fast point queries can be) (The hash table implementation doesn't work on range queries, and its purpose is to provide an idea of how fast point queries can be)
``` ```
Check: 2.15925 seconds, 1731.4 MB/s, Add: 1.08519 seconds, 646.926 MB/s, Gc ratio: 52.1526% Check: 1.86291 seconds, 2006.81 MB/s, Add: 0.923653 seconds, 760.067 MB/s, Gc ratio: 54.2605%
``` ```