Skip to content

Conversation

@Centril
Copy link
Contributor

@Centril Centril commented Feb 14, 2024

Description of Changes

  1. Add a method read_col to RowRef and use it.
  2. Simplify InvalidFieldError creation.
  3. Simplify and dedup various relational_db tests, including using ReadColumn.

Best reviewed by hiding whitespace changes.

API and ABI breaking changes

None

Expected complexity level and risk

1

@bfops bfops added the release-any To be landed in any release window label Feb 15, 2024
@cloutiertyler
Copy link
Contributor

benchmarks please

@github-actions
Copy link
Contributor

github-actions bot commented Feb 16, 2024

Benchmark results

Benchmark Report

Legend:

  • load: number of rows pre-loaded into the database
  • count: number of rows touched by the transaction
  • index types:
    • unique: a single index on the id column
    • non_unique: no indexes
    • multi_index: non-unique index on every column
  • schemas:
    • person(id: u32, name: String, age: u64)
    • location(id: u32, x: u64, y: u64)

All throughputs are single-threaded.

Empty transaction

db on disk new latency old latency new throughput old throughput
sqlite 💿 - 417.7±2.43ns - -
sqlite 🧠 - 406.8±2.43ns - -
stdb_module 💿 20.3±1.46µs 20.3±1.54µs - -
stdb_module 🧠 19.3±1.20µs 18.5±0.86µs - -
stdb_raw 💿 939.3±2.42ns 776.5±1.14ns - -
stdb_raw 🧠 879.7±2.71ns 725.3±0.82ns - -

Single-row insertions

db on disk schema index type load new latency old latency new throughput old throughput
sqlite 💿 location multi_index 0 - 14.8±0.25µs - 66.0 Ktx/sec
sqlite 💿 location multi_index 1000 - 15.7±0.02µs - 62.3 Ktx/sec
sqlite 💿 location non_unique 0 - 7.0±0.01µs - 139.7 Ktx/sec
sqlite 💿 location non_unique 1000 - 6.9±0.01µs - 141.8 Ktx/sec
sqlite 💿 location unique 0 - 7.1±0.04µs - 138.3 Ktx/sec
sqlite 💿 location unique 1000 - 6.9±0.01µs - 141.1 Ktx/sec
sqlite 💿 person multi_index 0 - 14.1±0.05µs - 69.4 Ktx/sec
sqlite 💿 person multi_index 1000 - 15.8±0.13µs - 61.6 Ktx/sec
sqlite 💿 person non_unique 0 - 7.2±0.59µs - 136.4 Ktx/sec
sqlite 💿 person non_unique 1000 - 7.1±0.06µs - 137.6 Ktx/sec
sqlite 💿 person unique 0 - 7.1±0.02µs - 137.5 Ktx/sec
sqlite 💿 person unique 1000 - 7.3±0.07µs - 134.4 Ktx/sec
sqlite 🧠 location multi_index 0 - 4.0±0.01µs - 246.3 Ktx/sec
sqlite 🧠 location multi_index 1000 - 5.1±0.02µs - 189.7 Ktx/sec
sqlite 🧠 location non_unique 0 - 1785.7±3.52ns - 546.9 Ktx/sec
sqlite 🧠 location non_unique 1000 - 1848.7±3.54ns - 528.2 Ktx/sec
sqlite 🧠 location unique 0 - 1804.5±3.29ns - 541.2 Ktx/sec
sqlite 🧠 location unique 1000 - 1877.0±4.86ns - 520.3 Ktx/sec
sqlite 🧠 person multi_index 0 - 3.6±0.01µs - 273.9 Ktx/sec
sqlite 🧠 person multi_index 1000 - 5.4±0.03µs - 182.3 Ktx/sec
sqlite 🧠 person non_unique 0 - 1859.9±16.90ns - 525.1 Ktx/sec
sqlite 🧠 person non_unique 1000 - 1990.6±16.59ns - 490.6 Ktx/sec
sqlite 🧠 person unique 0 - 1841.7±7.65ns - 530.3 Ktx/sec
sqlite 🧠 person unique 1000 - 2.0±0.01µs - 483.4 Ktx/sec
stdb_module 💿 location multi_index 0 49.9±2.86µs 46.4±3.50µs 19.6 Ktx/sec 21.0 Ktx/sec
stdb_module 💿 location multi_index 1000 79.2±7.25µs 68.4±5.41µs 12.3 Ktx/sec 14.3 Ktx/sec
stdb_module 💿 location non_unique 0 47.8±5.13µs 43.2±6.79µs 20.4 Ktx/sec 22.6 Ktx/sec
stdb_module 💿 location non_unique 1000 85.5±1.44µs 83.2±4.52µs 11.4 Ktx/sec 11.7 Ktx/sec
stdb_module 💿 location unique 0 50.0±1.93µs 47.5±3.65µs 19.5 Ktx/sec 20.6 Ktx/sec
stdb_module 💿 location unique 1000 89.4±0.87µs 86.5±0.34µs 10.9 Ktx/sec 11.3 Ktx/sec
stdb_module 💿 person multi_index 0 58.5±4.58µs 53.3±3.83µs 16.7 Ktx/sec 18.3 Ktx/sec
stdb_module 💿 person multi_index 1000 108.2±15.10µs 120.9±1.50µs 9.0 Ktx/sec 8.1 Ktx/sec
stdb_module 💿 person non_unique 0 52.7±4.84µs 51.3±4.80µs 18.5 Ktx/sec 19.0 Ktx/sec
stdb_module 💿 person non_unique 1000 78.3±5.99µs 93.4±16.34µs 12.5 Ktx/sec 10.5 Ktx/sec
stdb_module 💿 person unique 0 55.5±5.00µs 50.8±3.72µs 17.6 Ktx/sec 19.2 Ktx/sec
stdb_module 💿 person unique 1000 92.8±6.42µs 76.2±6.19µs 10.5 Ktx/sec 12.8 Ktx/sec
stdb_module 🧠 location multi_index 0 40.8±3.18µs 38.4±2.02µs 23.9 Ktx/sec 25.5 Ktx/sec
stdb_module 🧠 location multi_index 1000 65.9±2.30µs 66.8±0.12µs 14.8 Ktx/sec 14.6 Ktx/sec
stdb_module 🧠 location non_unique 0 36.5±1.82µs 31.9±2.93µs 26.8 Ktx/sec 30.6 Ktx/sec
stdb_module 🧠 location non_unique 1000 46.7±5.84µs 36.3±2.17µs 20.9 Ktx/sec 26.9 Ktx/sec
stdb_module 🧠 location unique 0 38.5±2.91µs 35.9±1.75µs 25.4 Ktx/sec 27.2 Ktx/sec
stdb_module 🧠 location unique 1000 59.9±0.41µs 41.8±4.98µs 16.3 Ktx/sec 23.4 Ktx/sec
stdb_module 🧠 person multi_index 0 41.4±3.96µs 36.7±3.75µs 23.6 Ktx/sec 26.6 Ktx/sec
stdb_module 🧠 person multi_index 1000 107.7±3.12µs 103.5±1.66µs 9.1 Ktx/sec 9.4 Ktx/sec
stdb_module 🧠 person non_unique 0 38.0±4.00µs 36.1±2.87µs 25.7 Ktx/sec 27.0 Ktx/sec
stdb_module 🧠 person non_unique 1000 101.0±1.46µs 108.0±0.84µs 9.7 Ktx/sec 9.0 Ktx/sec
stdb_module 🧠 person unique 0 42.1±2.50µs 38.8±2.89µs 23.2 Ktx/sec 25.1 Ktx/sec
stdb_module 🧠 person unique 1000 100.8±1.19µs 97.0±1.70µs 9.7 Ktx/sec 10.1 Ktx/sec
stdb_raw 💿 location multi_index 0 6.0±0.01µs 5.6±0.01µs 161.7 Ktx/sec 173.3 Ktx/sec
stdb_raw 💿 location multi_index 1000 17.2±26.39µs 8.3±0.08µs 56.8 Ktx/sec 117.4 Ktx/sec
stdb_raw 💿 location non_unique 0 5.4±0.02µs 5.1±0.01µs 180.8 Ktx/sec 192.9 Ktx/sec
stdb_raw 💿 location non_unique 1000 13.8±20.22µs 16.7±31.36µs 70.8 Ktx/sec 58.4 Ktx/sec
stdb_raw 💿 location unique 0 5.9±0.12µs 5.4±0.02µs 164.5 Ktx/sec 179.3 Ktx/sec
stdb_raw 💿 location unique 1000 8.6±0.13µs 23.5±48.88µs 113.3 Ktx/sec 41.5 Ktx/sec
stdb_raw 💿 person multi_index 0 7.5±0.01µs 7.0±0.32µs 130.6 Ktx/sec 138.6 Ktx/sec
stdb_raw 💿 person multi_index 1000 10.8±0.13µs 10.1±0.28µs 90.7 Ktx/sec 96.4 Ktx/sec
stdb_raw 💿 person non_unique 0 6.7±0.01µs 6.2±0.01µs 145.5 Ktx/sec 157.5 Ktx/sec
stdb_raw 💿 person non_unique 1000 26.0±170.27µs 8.4±0.13µs 37.6 Ktx/sec 116.9 Ktx/sec
stdb_raw 💿 person unique 0 7.2±0.02µs 6.7±0.34µs 135.8 Ktx/sec 145.0 Ktx/sec
stdb_raw 💿 person unique 1000 10.1±0.13µs 9.5±0.12µs 96.4 Ktx/sec 102.7 Ktx/sec
stdb_raw 🧠 location multi_index 0 3.4±0.00µs 3.2±0.01µs 287.3 Ktx/sec 308.7 Ktx/sec
stdb_raw 🧠 location multi_index 1000 4.9±0.02µs 4.6±0.02µs 198.1 Ktx/sec 213.9 Ktx/sec
stdb_raw 🧠 location non_unique 0 2.8±0.00µs 2.6±0.01µs 342.8 Ktx/sec 375.3 Ktx/sec
stdb_raw 🧠 location non_unique 1000 3.6±0.01µs 3.3±0.01µs 274.4 Ktx/sec 292.1 Ktx/sec
stdb_raw 🧠 location unique 0 3.3±0.01µs 3.0±0.01µs 298.9 Ktx/sec 327.5 Ktx/sec
stdb_raw 🧠 location unique 1000 4.6±0.03µs 4.3±0.01µs 213.2 Ktx/sec 224.9 Ktx/sec
stdb_raw 🧠 person multi_index 0 4.1±0.01µs 3.9±0.01µs 236.2 Ktx/sec 249.6 Ktx/sec
stdb_raw 🧠 person multi_index 1000 6.0±0.03µs 5.7±0.04µs 164.0 Ktx/sec 170.8 Ktx/sec
stdb_raw 🧠 person non_unique 0 3.5±0.01µs 3.2±0.02µs 280.6 Ktx/sec 303.4 Ktx/sec
stdb_raw 🧠 person non_unique 1000 4.4±0.02µs 4.2±0.05µs 221.4 Ktx/sec 233.4 Ktx/sec
stdb_raw 🧠 person unique 0 3.9±0.01µs 3.6±0.02µs 250.5 Ktx/sec 269.1 Ktx/sec
stdb_raw 🧠 person unique 1000 5.3±0.04µs 5.1±0.03µs 184.1 Ktx/sec 190.5 Ktx/sec

Multi-row insertions

db on disk schema index type load count new latency old latency new throughput old throughput
sqlite 💿 location multi_index 0 100 - 130.0±1.60µs - 7.5 Ktx/sec
sqlite 💿 location multi_index 1000 100 - 197.3±0.24µs - 5.0 Ktx/sec
sqlite 💿 location non_unique 0 100 - 50.9±0.72µs - 19.2 Ktx/sec
sqlite 💿 location non_unique 1000 100 - 52.6±0.23µs - 18.6 Ktx/sec
sqlite 💿 location unique 0 100 - 51.4±1.09µs - 19.0 Ktx/sec
sqlite 💿 location unique 1000 100 - 56.2±0.26µs - 17.4 Ktx/sec
sqlite 💿 person multi_index 0 100 - 115.4±0.84µs - 8.5 Ktx/sec
sqlite 💿 person multi_index 1000 100 - 225.7±0.44µs - 4.3 Ktx/sec
sqlite 💿 person non_unique 0 100 - 46.4±0.35µs - 21.1 Ktx/sec
sqlite 💿 person non_unique 1000 100 - 58.6±0.21µs - 16.7 Ktx/sec
sqlite 💿 person unique 0 100 - 48.6±0.43µs - 20.1 Ktx/sec
sqlite 💿 person unique 1000 100 - 54.3±0.11µs - 18.0 Ktx/sec
sqlite 🧠 location multi_index 0 100 - 117.7±0.38µs - 8.3 Ktx/sec
sqlite 🧠 location multi_index 1000 100 - 166.6±0.36µs - 5.9 Ktx/sec
sqlite 🧠 location non_unique 0 100 - 44.1±0.65µs - 22.2 Ktx/sec
sqlite 🧠 location non_unique 1000 100 - 44.7±0.22µs - 21.9 Ktx/sec
sqlite 🧠 location unique 0 100 - 45.5±0.19µs - 21.4 Ktx/sec
sqlite 🧠 location unique 1000 100 - 48.9±0.26µs - 20.0 Ktx/sec
sqlite 🧠 person multi_index 0 100 - 104.5±0.20µs - 9.3 Ktx/sec
sqlite 🧠 person multi_index 1000 100 - 187.3±0.57µs - 5.2 Ktx/sec
sqlite 🧠 person non_unique 0 100 - 40.8±0.14µs - 23.9 Ktx/sec
sqlite 🧠 person non_unique 1000 100 - 44.6±0.16µs - 21.9 Ktx/sec
sqlite 🧠 person unique 0 100 - 42.0±0.19µs - 23.2 Ktx/sec
sqlite 🧠 person unique 1000 100 - 47.6±0.46µs - 20.5 Ktx/sec
stdb_module 💿 location multi_index 0 100 536.5±9.43µs 444.3±0.35µs 1863 tx/sec 2.2 Ktx/sec
stdb_module 💿 location multi_index 1000 100 553.9±15.24µs 480.1±1.62µs 1805 tx/sec 2.0 Ktx/sec
stdb_module 💿 location non_unique 0 100 429.1±14.70µs 375.2±0.24µs 2.3 Ktx/sec 2.6 Ktx/sec
stdb_module 💿 location non_unique 1000 100 464.3±1.42µs 388.3±1.62µs 2.1 Ktx/sec 2.5 Ktx/sec
stdb_module 💿 location unique 0 100 511.7±13.06µs 399.5±36.64µs 1954 tx/sec 2.4 Ktx/sec
stdb_module 💿 location unique 1000 100 382.2±84.46µs 475.4±13.12µs 2.6 Ktx/sec 2.1 Ktx/sec
stdb_module 💿 person multi_index 0 100 784.7±11.32µs 806.4±35.84µs 1274 tx/sec 1240 tx/sec
stdb_module 💿 person multi_index 1000 100 822.3±1.36µs 739.1±53.09µs 1216 tx/sec 1352 tx/sec
stdb_module 💿 person non_unique 0 100 636.1±41.69µs 651.3±0.85µs 1572 tx/sec 1535 tx/sec
stdb_module 💿 person non_unique 1000 100 639.5±67.99µs 701.7±0.70µs 1563 tx/sec 1425 tx/sec
stdb_module 💿 person unique 0 100 659.4±60.91µs 588.5±10.83µs 1516 tx/sec 1699 tx/sec
stdb_module 💿 person unique 1000 100 684.1±50.24µs 786.5±1.31µs 1461 tx/sec 1271 tx/sec
stdb_module 🧠 location multi_index 0 100 364.5±0.46µs 319.5±58.36µs 2.7 Ktx/sec 3.1 Ktx/sec
stdb_module 🧠 location multi_index 1000 100 336.1±83.57µs 420.2±11.87µs 2.9 Ktx/sec 2.3 Ktx/sec
stdb_module 🧠 location non_unique 0 100 320.2±58.54µs 209.5±35.51µs 3.1 Ktx/sec 4.7 Ktx/sec
stdb_module 🧠 location non_unique 1000 100 228.4±16.40µs 243.9±11.92µs 4.3 Ktx/sec 4.0 Ktx/sec
stdb_module 🧠 location unique 0 100 388.2±56.59µs 391.3±0.47µs 2.5 Ktx/sec 2.5 Ktx/sec
stdb_module 🧠 location unique 1000 100 305.7±0.69µs 419.0±12.90µs 3.2 Ktx/sec 2.3 Ktx/sec
stdb_module 🧠 person multi_index 0 100 553.2±0.75µs 512.6±30.71µs 1807 tx/sec 1950 tx/sec
stdb_module 🧠 person multi_index 1000 100 596.9±0.65µs 565.4±3.49µs 1675 tx/sec 1768 tx/sec
stdb_module 🧠 person non_unique 0 100 408.5±30.64µs 407.8±3.18µs 2.4 Ktx/sec 2.4 Ktx/sec
stdb_module 🧠 person non_unique 1000 100 465.3±32.46µs 433.3±1.17µs 2.1 Ktx/sec 2.3 Ktx/sec
stdb_module 🧠 person unique 0 100 540.5±6.35µs 448.8±40.53µs 1849 tx/sec 2.2 Ktx/sec
stdb_module 🧠 person unique 1000 100 510.4±43.64µs 512.8±4.10µs 1959 tx/sec 1950 tx/sec
stdb_raw 💿 location multi_index 0 100 176.1±2.08µs 159.7±0.11µs 5.5 Ktx/sec 6.1 Ktx/sec
stdb_raw 💿 location multi_index 1000 100 189.9±0.49µs 182.0±26.92µs 5.1 Ktx/sec 5.4 Ktx/sec
stdb_raw 💿 location non_unique 0 100 130.4±1.60µs 120.6±0.02µs 7.5 Ktx/sec 8.1 Ktx/sec
stdb_raw 💿 location non_unique 1000 100 131.8±0.48µs 122.4±0.34µs 7.4 Ktx/sec 8.0 Ktx/sec
stdb_raw 💿 location unique 0 100 166.6±0.16µs 156.3±0.16µs 5.9 Ktx/sec 6.2 Ktx/sec
stdb_raw 💿 location unique 1000 100 181.4±21.88µs 162.7±0.26µs 5.4 Ktx/sec 6.0 Ktx/sec
stdb_raw 💿 person multi_index 0 100 290.0±0.28µs 274.3±0.13µs 3.4 Ktx/sec 3.6 Ktx/sec
stdb_raw 💿 person multi_index 1000 100 300.9±0.27µs 294.0±22.86µs 3.2 Ktx/sec 3.3 Ktx/sec
stdb_raw 💿 person non_unique 0 100 219.1±0.21µs 210.6±0.14µs 4.5 Ktx/sec 4.6 Ktx/sec
stdb_raw 💿 person non_unique 1000 100 232.2±34.42µs 212.3±0.43µs 4.2 Ktx/sec 4.6 Ktx/sec
stdb_raw 💿 person unique 0 100 258.6±0.08µs 250.2±8.07µs 3.8 Ktx/sec 3.9 Ktx/sec
stdb_raw 💿 person unique 1000 100 270.0±13.20µs 255.4±0.25µs 3.6 Ktx/sec 3.8 Ktx/sec
stdb_raw 🧠 location multi_index 0 100 127.1±0.16µs 118.9±0.08µs 7.7 Ktx/sec 8.2 Ktx/sec
stdb_raw 🧠 location multi_index 1000 100 141.8±0.23µs 132.9±0.19µs 6.9 Ktx/sec 7.3 Ktx/sec
stdb_raw 🧠 location non_unique 0 100 82.2±0.12µs 80.5±0.05µs 11.9 Ktx/sec 12.1 Ktx/sec
stdb_raw 🧠 location non_unique 1000 100 83.7±0.21µs 81.5±0.09µs 11.7 Ktx/sec 12.0 Ktx/sec
stdb_raw 🧠 location unique 0 100 119.1±0.15µs 116.8±0.15µs 8.2 Ktx/sec 8.4 Ktx/sec
stdb_raw 🧠 location unique 1000 100 126.3±0.11µs 122.8±0.21µs 7.7 Ktx/sec 8.0 Ktx/sec
stdb_raw 🧠 person multi_index 0 100 193.0±0.07µs 187.0±0.15µs 5.1 Ktx/sec 5.2 Ktx/sec
stdb_raw 🧠 person multi_index 1000 100 204.2±0.39µs 199.1±0.32µs 4.8 Ktx/sec 4.9 Ktx/sec
stdb_raw 🧠 person non_unique 0 100 125.1±0.06µs 123.5±0.12µs 7.8 Ktx/sec 7.9 Ktx/sec
stdb_raw 🧠 person non_unique 1000 100 126.8±0.11µs 124.9±0.18µs 7.7 Ktx/sec 7.8 Ktx/sec
stdb_raw 🧠 person unique 0 100 163.2±0.25µs 160.7±0.29µs 6.0 Ktx/sec 6.1 Ktx/sec
stdb_raw 🧠 person unique 1000 100 170.4±0.13µs 168.9±0.13µs 5.7 Ktx/sec 5.8 Ktx/sec

Full table iterate

db on disk schema index type new latency old latency new throughput old throughput
sqlite 💿 location unique - 8.6±0.04µs - 113.1 Ktx/sec
sqlite 💿 person unique - 9.2±0.04µs - 106.1 Ktx/sec
sqlite 🧠 location unique - 7.4±0.04µs - 131.8 Ktx/sec
sqlite 🧠 person unique - 8.1±0.03µs - 121.1 Ktx/sec
stdb_module 💿 location unique 54.2±6.80µs 51.0±6.46µs 18.0 Ktx/sec 19.2 Ktx/sec
stdb_module 💿 person unique 57.1±1.73µs 56.2±2.11µs 17.1 Ktx/sec 17.4 Ktx/sec
stdb_module 🧠 location unique 45.1±2.36µs 47.4±5.59µs 21.7 Ktx/sec 20.6 Ktx/sec
stdb_module 🧠 person unique 56.9±2.86µs 54.4±2.34µs 17.2 Ktx/sec 18.0 Ktx/sec
stdb_raw 💿 location unique 7.6±0.00µs 7.7±0.00µs 128.5 Ktx/sec 126.2 Ktx/sec
stdb_raw 💿 person unique 8.4±0.00µs 8.6±0.00µs 115.8 Ktx/sec 114.1 Ktx/sec
stdb_raw 🧠 location unique 7.5±0.00µs 7.7±0.00µs 129.6 Ktx/sec 127.2 Ktx/sec
stdb_raw 🧠 person unique 8.4±0.00µs 8.5±0.00µs 116.7 Ktx/sec 114.9 Ktx/sec

Find unique key

db on disk key type load new latency old latency new throughput old throughput
sqlite 💿 u32 1000 - 2.2±0.01µs - 437.6 Ktx/sec
sqlite 🧠 u32 1000 - 1067.3±1.33ns - 915.0 Ktx/sec
stdb_module 💿 u32 1000 28.3±1.60µs 27.1±1.35µs 34.5 Ktx/sec 36.1 Ktx/sec
stdb_module 🧠 u32 1000 28.7±1.76µs 25.3±1.32µs 34.1 Ktx/sec 38.7 Ktx/sec
stdb_raw 💿 u32 1000 1730.0±2.79ns 1387.9±1.66ns 564.5 Ktx/sec 703.6 Ktx/sec
stdb_raw 🧠 u32 1000 1647.6±3.76ns 1323.6±0.98ns 592.7 Ktx/sec 737.8 Ktx/sec

Filter

db on disk key type index strategy load count new latency old latency new throughput old throughput
sqlite 💿 string indexed 1000 10 - 5.6±0.01µs - 173.7 Ktx/sec
sqlite 💿 string non_indexed 1000 10 - 53.2±0.20µs - 18.4 Ktx/sec
sqlite 💿 u64 indexed 1000 10 - 5.1±0.01µs - 190.0 Ktx/sec
sqlite 💿 u64 non_indexed 1000 10 - 34.5±1.81µs - 28.3 Ktx/sec
sqlite 🧠 string indexed 1000 10 - 4.2±0.00µs - 230.7 Ktx/sec
sqlite 🧠 string non_indexed 1000 10 - 51.7±0.23µs - 18.9 Ktx/sec
sqlite 🧠 u64 indexed 1000 10 - 3.8±0.01µs - 260.2 Ktx/sec
sqlite 🧠 u64 non_indexed 1000 10 - 32.3±0.06µs - 30.2 Ktx/sec
stdb_module 💿 string indexed 1000 10 33.4±1.60µs 33.4±2.13µs 29.2 Ktx/sec 29.2 Ktx/sec
stdb_module 💿 string non_indexed 1000 10 92.1±1.23µs 94.7±0.10µs 10.6 Ktx/sec 10.3 Ktx/sec
stdb_module 💿 u64 indexed 1000 10 32.0±1.80µs 29.6±1.72µs 30.5 Ktx/sec 33.0 Ktx/sec
stdb_module 💿 u64 non_indexed 1000 10 73.8±1.99µs 74.0±3.89µs 13.2 Ktx/sec 13.2 Ktx/sec
stdb_module 🧠 string indexed 1000 10 35.1±2.44µs 32.7±1.09µs 27.8 Ktx/sec 29.9 Ktx/sec
stdb_module 🧠 string non_indexed 1000 10 94.0±1.01µs 93.4±2.39µs 10.4 Ktx/sec 10.5 Ktx/sec
stdb_module 🧠 u64 indexed 1000 10 31.9±2.00µs 30.8±2.21µs 30.7 Ktx/sec 31.7 Ktx/sec
stdb_module 🧠 u64 non_indexed 1000 10 74.7±3.39µs 78.8±5.24µs 13.1 Ktx/sec 12.4 Ktx/sec
stdb_raw 💿 string indexed 1000 10 1995.4±3.03ns 1659.8±2.28ns 489.4 Ktx/sec 588.3 Ktx/sec
stdb_raw 💿 string non_indexed 1000 10 70.3±0.03µs 65.9±0.03µs 13.9 Ktx/sec 14.8 Ktx/sec
stdb_raw 💿 u64 indexed 1000 10 1912.1±3.26ns 1593.3±0.99ns 510.7 Ktx/sec 612.9 Ktx/sec
stdb_raw 💿 u64 non_indexed 1000 10 54.5±0.08µs 47.6±0.05µs 17.9 Ktx/sec 20.5 Ktx/sec
stdb_raw 🧠 string indexed 1000 10 1909.8±4.64ns 1590.4±1.55ns 511.3 Ktx/sec 614.0 Ktx/sec
stdb_raw 🧠 string non_indexed 1000 10 70.3±0.04µs 65.3±0.05µs 13.9 Ktx/sec 15.0 Ktx/sec
stdb_raw 🧠 u64 indexed 1000 10 1851.3±1.84ns 1526.8±1.13ns 527.5 Ktx/sec 639.6 Ktx/sec
stdb_raw 🧠 u64 non_indexed 1000 10 54.5±0.13µs 47.5±0.06µs 17.9 Ktx/sec 20.5 Ktx/sec

Serialize

schema format count new latency old latency new throughput old throughput
location bsatn 100 1722.6±32.79ns 1782.6±32.12ns 55.4 Mtx/sec 53.5 Mtx/sec
location json 100 3.1±0.05µs 3.5±0.06µs 30.3 Mtx/sec 27.6 Mtx/sec
location product_value 100 604.7±0.21ns 628.4±0.17ns 157.7 Mtx/sec 151.8 Mtx/sec
person bsatn 100 2.5±0.01µs 2.5±0.00µs 38.7 Mtx/sec 38.6 Mtx/sec
person json 100 5.0±0.08µs 5.1±0.04µs 19.2 Mtx/sec 18.8 Mtx/sec
person product_value 100 648.1±0.69ns 647.2±0.33ns 147.2 Mtx/sec 147.3 Mtx/sec

Module: invoke with large arguments

arg size new latency old latency new throughput old throughput
64KiB 68.0±6.82µs 65.8±8.34µs - -

Module: print bulk

line count new latency old latency new throughput old throughput
1 27.6±1.95µs 28.3±2.47µs - -
100 201.6±1.62µs 197.2±0.80µs - -
1000 1819.5±5.24µs 1849.7±64.88µs - -

Remaining benchmarks

name new latency old latency new throughput old throughput
sqlite/💿/update_bulk/location/unique/load=1000/count=10 - 8.8±0.05µs - 111.3 Ktx/sec
sqlite/💿/update_bulk/location/unique/load=1000/count=100 - 20.3±0.10µs - 48.2 Ktx/sec
sqlite/💿/update_bulk/person/unique/load=1000/count=10 - 9.0±0.07µs - 108.4 Ktx/sec
sqlite/💿/update_bulk/person/unique/load=1000/count=100 - 21.9±0.05µs - 44.5 Ktx/sec
sqlite/🧠/update_bulk/location/unique/load=1000/count=10 - 3.5±0.01µs - 276.5 Ktx/sec
sqlite/🧠/update_bulk/location/unique/load=1000/count=100 - 15.4±0.02µs - 63.5 Ktx/sec
sqlite/🧠/update_bulk/person/unique/load=1000/count=10 - 3.7±0.02µs - 261.8 Ktx/sec
sqlite/🧠/update_bulk/person/unique/load=1000/count=100 - 16.8±0.05µs - 58.1 Ktx/sec
stdb_module/💿/update_bulk/location/unique/load=1000/count=10 282.5±27.39µs 388.1±1.12µs 3.5 Ktx/sec 2.5 Ktx/sec
stdb_module/💿/update_bulk/location/unique/load=1000/count=100 1138.9±7.32µs 689.0±113.18µs 878 tx/sec 1451 tx/sec
stdb_module/💿/update_bulk/person/unique/load=1000/count=10 442.8±38.72µs 460.3±17.16µs 2.2 Ktx/sec 2.1 Ktx/sec
stdb_module/💿/update_bulk/person/unique/load=1000/count=100 935.8±0.20µs 914.3±96.79µs 1068 tx/sec 1093 tx/sec
stdb_module/🧠/update_bulk/location/unique/load=1000/count=10 234.6±0.34µs 234.2±0.44µs 4.2 Ktx/sec 4.2 Ktx/sec
stdb_module/🧠/update_bulk/location/unique/load=1000/count=100 607.9±5.29µs 567.4±1.73µs 1645 tx/sec 1762 tx/sec
stdb_module/🧠/update_bulk/person/unique/load=1000/count=10 342.1±3.64µs 395.0±1.68µs 2.9 Ktx/sec 2.5 Ktx/sec
stdb_module/🧠/update_bulk/person/unique/load=1000/count=100 734.9±0.80µs 1039.5±164.65µs 1360 tx/sec 962 tx/sec
stdb_raw/💿/update_bulk/location/unique/load=1000/count=10 43.7±0.10µs 46.1±20.21µs 22.4 Ktx/sec 21.2 Ktx/sec
stdb_raw/💿/update_bulk/location/unique/load=1000/count=100 350.9±0.29µs 324.2±25.21µs 2.8 Ktx/sec 3.0 Ktx/sec
stdb_raw/💿/update_bulk/person/unique/load=1000/count=10 59.5±0.08µs 81.0±81.61µs 16.4 Ktx/sec 12.1 Ktx/sec
stdb_raw/💿/update_bulk/person/unique/load=1000/count=100 497.3±0.34µs 483.9±69.43µs 2010 tx/sec 2.0 Ktx/sec
stdb_raw/🧠/update_bulk/location/unique/load=1000/count=10 30.4±0.06µs 28.0±0.05µs 32.1 Ktx/sec 34.9 Ktx/sec
stdb_raw/🧠/update_bulk/location/unique/load=1000/count=100 259.6±0.20µs 239.7±0.30µs 3.8 Ktx/sec 4.1 Ktx/sec
stdb_raw/🧠/update_bulk/person/unique/load=1000/count=10 40.5±0.04µs 38.0±0.04µs 24.1 Ktx/sec 25.7 Ktx/sec
stdb_raw/🧠/update_bulk/person/unique/load=1000/count=100 352.8±0.37µs 331.6±0.45µs 2.8 Ktx/sec 2.9 Ktx/sec

@Centril Centril added this pull request to the merge queue Feb 19, 2024
Merged via the queue into master with commit 5ab4342 Feb 19, 2024
@Centril Centril deleted the centril/read-col-to-pv-refactor branch February 19, 2024 18:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-any To be landed in any release window

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants