Skip to content

Commit

Permalink
perf(572): Track the number of reducer panics (#578)
Browse files Browse the repository at this point in the history
Closes #572.
  • Loading branch information
joshua-spacetime authored Nov 20, 2023
1 parent 6524184 commit 68ad8ad
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
5 changes: 5 additions & 0 deletions crates/core/src/host/wasm_common/module_host_actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,11 @@ impl<T: WasmInstance> WasmModuleInstance<T> {

T::log_traceback("reducer", reducer_name, &err);

WORKER_METRICS
.wasm_instance_errors
.with_label_values(&caller_identity, &self.info.module_hash, &caller_address, reducer_name)
.inc();

// discard this instance
self.trapped = true;

Expand Down
5 changes: 5 additions & 0 deletions crates/core/src/worker_metrics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ metrics_group!(
#[buckets(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 25, 50)]
pub instance_queue_length_histogram: HistogramVec,

#[name = spacetime_worker_wasm_instance_errors_cumulative]
#[help = "The number of fatal WASM instance errors, such as reducer panics."]
#[labels(identity: Identity, module_hash: Hash, database_address: Address, reducer_symbol: str)]
pub wasm_instance_errors: IntCounterVec,

#[name = spacetime_system_disk_space_total_bytes]
#[help = "A node's total disk space (in bytes)"]
pub system_disk_space_total: IntGauge,
Expand Down

1 comment on commit 68ad8ad

@github-actions
Copy link

@github-actions github-actions bot commented on 68ad8ad Nov 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 💿 442.8±1.77ns 426.0±1.66ns - -
sqlite 🧠 437.4±2.75ns 426.7±2.23ns - -
stdb_module 💿 17.7±1.14µs 17.9±1.02µs - -
stdb_module 🧠 17.4±0.89µs 17.6±0.77µs - -
stdb_raw 💿 731.2±1.34ns 736.7±0.85ns - -
stdb_raw 🧠 685.5±1.09ns 687.4±1.40ns - -

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±1.01µs 14.9±1.25µs 66.2 Ktx/sec 65.6 Ktx/sec
sqlite 💿 location multi_index 1000 15.8±0.16µs 15.8±0.08µs 61.8 Ktx/sec 62.0 Ktx/sec
sqlite 💿 location non_unique 0 7.1±0.03µs 7.1±0.03µs 137.0 Ktx/sec 138.4 Ktx/sec
sqlite 💿 location non_unique 1000 7.1±0.03µs 7.0±0.02µs 136.7 Ktx/sec 140.2 Ktx/sec
sqlite 💿 location unique 0 7.1±0.03µs 7.1±0.13µs 137.0 Ktx/sec 138.4 Ktx/sec
sqlite 💿 location unique 1000 7.1±0.03µs 7.0±0.03µs 137.0 Ktx/sec 140.0 Ktx/sec
sqlite 💿 person multi_index 0 14.4±0.06µs 14.2±0.05µs 67.9 Ktx/sec 68.9 Ktx/sec
sqlite 💿 person multi_index 1000 16.2±0.16µs 16.1±0.10µs 60.4 Ktx/sec 60.7 Ktx/sec
sqlite 💿 person non_unique 0 7.4±0.59µs 7.2±0.49µs 132.2 Ktx/sec 135.1 Ktx/sec
sqlite 💿 person non_unique 1000 7.4±0.05µs 8.2±10.30µs 132.8 Ktx/sec 118.7 Ktx/sec
sqlite 💿 person unique 0 7.3±0.59µs 7.2±0.60µs 133.1 Ktx/sec 135.0 Ktx/sec
sqlite 💿 person unique 1000 7.4±0.08µs 7.3±0.06µs 132.5 Ktx/sec 133.5 Ktx/sec
sqlite 🧠 location multi_index 0 4.0±0.01µs 4.1±0.01µs 242.4 Ktx/sec 236.9 Ktx/sec
sqlite 🧠 location multi_index 1000 5.2±0.04µs 5.2±0.06µs 187.2 Ktx/sec 188.5 Ktx/sec
sqlite 🧠 location non_unique 0 1845.3±9.15ns 1862.3±6.72ns 529.2 Ktx/sec 524.4 Ktx/sec
sqlite 🧠 location non_unique 1000 1902.5±9.49ns 1893.7±8.58ns 513.3 Ktx/sec 515.7 Ktx/sec
sqlite 🧠 location unique 0 1835.1±8.09ns 1847.3±8.95ns 532.1 Ktx/sec 528.7 Ktx/sec
sqlite 🧠 location unique 1000 1980.9±59.43ns 1956.8±33.41ns 493.0 Ktx/sec 499.1 Ktx/sec
sqlite 🧠 person multi_index 0 3.7±0.01µs 3.7±0.03µs 265.7 Ktx/sec 267.3 Ktx/sec
sqlite 🧠 person multi_index 1000 5.6±0.05µs 5.6±0.03µs 175.8 Ktx/sec 174.7 Ktx/sec
sqlite 🧠 person non_unique 0 1936.8±9.70ns 1937.5±4.97ns 504.2 Ktx/sec 504.0 Ktx/sec
sqlite 🧠 person non_unique 1000 2.0±0.01µs 2.0±0.02µs 487.0 Ktx/sec 486.8 Ktx/sec
sqlite 🧠 person unique 0 1903.9±8.90ns 1930.0±3.93ns 512.9 Ktx/sec 506.0 Ktx/sec
sqlite 🧠 person unique 1000 2.1±0.02µs 2.1±0.03µs 474.6 Ktx/sec 476.0 Ktx/sec
stdb_module 💿 location multi_index 0 53.2±5.55µs 55.3±4.35µs 18.3 Ktx/sec 17.7 Ktx/sec
stdb_module 💿 location multi_index 1000 163.3±70.96µs 312.1±19.33µs 6.0 Ktx/sec 3.1 Ktx/sec
stdb_module 💿 location non_unique 0 40.5±4.41µs 40.7±3.73µs 24.1 Ktx/sec 24.0 Ktx/sec
stdb_module 💿 location non_unique 1000 274.8±6.92µs 209.6±89.13µs 3.6 Ktx/sec 4.7 Ktx/sec
stdb_module 💿 location unique 0 46.2±5.41µs 50.9±5.12µs 21.1 Ktx/sec 19.2 Ktx/sec
stdb_module 💿 location unique 1000 262.7±9.01µs 251.1±113.38µs 3.7 Ktx/sec 3.9 Ktx/sec
stdb_module 💿 person multi_index 0 64.9±6.07µs 68.4±4.07µs 15.0 Ktx/sec 14.3 Ktx/sec
stdb_module 💿 person multi_index 1000 346.4±18.05µs 143.6±10.09µs 2.8 Ktx/sec 6.8 Ktx/sec
stdb_module 💿 person non_unique 0 50.6±3.91µs 51.9±4.50µs 19.3 Ktx/sec 18.8 Ktx/sec
stdb_module 💿 person non_unique 1000 150.4±70.40µs 218.1±4.29µs 6.5 Ktx/sec 4.5 Ktx/sec
stdb_module 💿 person unique 0 58.9±3.57µs 57.1±4.77µs 16.6 Ktx/sec 17.1 Ktx/sec
stdb_module 💿 person unique 1000 171.2±31.09µs 172.6±24.79µs 5.7 Ktx/sec 5.7 Ktx/sec
stdb_module 🧠 location multi_index 0 39.1±4.11µs 39.2±3.33µs 25.0 Ktx/sec 24.9 Ktx/sec
stdb_module 🧠 location multi_index 1000 108.4±5.67µs 122.8±14.64µs 9.0 Ktx/sec 8.0 Ktx/sec
stdb_module 🧠 location non_unique 0 31.7±2.73µs 30.3±2.93µs 30.8 Ktx/sec 32.2 Ktx/sec
stdb_module 🧠 location non_unique 1000 176.4±11.97µs 133.5±6.00µs 5.5 Ktx/sec 7.3 Ktx/sec
stdb_module 🧠 location unique 0 32.7±2.57µs 35.2±2.83µs 29.9 Ktx/sec 27.7 Ktx/sec
stdb_module 🧠 location unique 1000 231.7±14.06µs 125.9±17.55µs 4.2 Ktx/sec 7.8 Ktx/sec
stdb_module 🧠 person multi_index 0 43.9±3.60µs 49.6±4.23µs 22.3 Ktx/sec 19.7 Ktx/sec
stdb_module 🧠 person multi_index 1000 164.4±89.57µs 147.2±21.48µs 5.9 Ktx/sec 6.6 Ktx/sec
stdb_module 🧠 person non_unique 0 32.9±3.94µs 31.5±2.03µs 29.7 Ktx/sec 31.0 Ktx/sec
stdb_module 🧠 person non_unique 1000 255.8±16.76µs 172.1±51.43µs 3.8 Ktx/sec 5.7 Ktx/sec
stdb_module 🧠 person unique 0 39.1±2.91µs 38.5±5.30µs 25.0 Ktx/sec 25.4 Ktx/sec
stdb_module 🧠 person unique 1000 216.3±13.31µs 117.3±27.61µs 4.5 Ktx/sec 8.3 Ktx/sec
stdb_raw 💿 location multi_index 0 6.6±0.02µs 6.6±0.01µs 147.5 Ktx/sec 147.8 Ktx/sec
stdb_raw 💿 location multi_index 1000 9.3±0.14µs 33.9±247.25µs 105.3 Ktx/sec 28.8 Ktx/sec
stdb_raw 💿 location non_unique 0 4.3±0.01µs 4.3±0.02µs 224.8 Ktx/sec 225.7 Ktx/sec
stdb_raw 💿 location non_unique 1000 5.8±0.12µs 15.7±100.41µs 168.8 Ktx/sec 62.2 Ktx/sec
stdb_raw 💿 location unique 0 5.6±0.01µs 5.7±0.02µs 173.5 Ktx/sec 171.5 Ktx/sec
stdb_raw 💿 location unique 1000 7.9±0.14µs 27.3±194.73µs 123.6 Ktx/sec 35.8 Ktx/sec
stdb_raw 💿 person multi_index 0 10.9±0.04µs 11.0±0.01µs 89.3 Ktx/sec 88.7 Ktx/sec
stdb_raw 💿 person multi_index 1000 56.4±422.14µs 55.6±413.76µs 17.3 Ktx/sec 17.6 Ktx/sec
stdb_raw 💿 person non_unique 0 5.4±0.04µs 5.5±0.01µs 179.2 Ktx/sec 177.9 Ktx/sec
stdb_raw 💿 person non_unique 1000 18.0±108.82µs 22.3±151.81µs 54.4 Ktx/sec 43.7 Ktx/sec
stdb_raw 💿 person unique 0 7.8±0.03µs 7.9±0.04µs 125.7 Ktx/sec 124.2 Ktx/sec
stdb_raw 💿 person unique 1000 38.4±279.80µs 10.5±0.19µs 25.5 Ktx/sec 92.6 Ktx/sec
stdb_raw 🧠 location multi_index 0 4.1±0.01µs 4.2±0.01µs 237.5 Ktx/sec 234.5 Ktx/sec
stdb_raw 🧠 location multi_index 1000 5.7±0.04µs 5.7±0.09µs 171.1 Ktx/sec 171.7 Ktx/sec
stdb_raw 🧠 location non_unique 0 1917.7±6.54ns 1889.9±8.59ns 509.2 Ktx/sec 516.7 Ktx/sec
stdb_raw 🧠 location non_unique 1000 2.4±0.02µs 2.4±0.02µs 405.9 Ktx/sec 409.8 Ktx/sec
stdb_raw 🧠 location unique 0 3.1±0.00µs 3.1±0.01µs 313.1 Ktx/sec 311.4 Ktx/sec
stdb_raw 🧠 location unique 1000 4.3±0.04µs 4.2±0.02µs 229.3 Ktx/sec 231.0 Ktx/sec
stdb_raw 🧠 person multi_index 0 7.8±0.01µs 7.9±0.01µs 124.7 Ktx/sec 123.8 Ktx/sec
stdb_raw 🧠 person multi_index 1000 9.9±0.06µs 9.8±0.05µs 99.0 Ktx/sec 99.9 Ktx/sec
stdb_raw 🧠 person non_unique 0 2.4±0.01µs 2.5±0.01µs 398.8 Ktx/sec 391.1 Ktx/sec
stdb_raw 🧠 person non_unique 1000 3.1±0.03µs 3.2±0.01µs 315.3 Ktx/sec 304.7 Ktx/sec
stdb_raw 🧠 person unique 0 4.7±0.01µs 4.8±0.01µs 206.0 Ktx/sec 203.5 Ktx/sec
stdb_raw 🧠 person unique 1000 6.1±0.07µs 6.1±0.02µs 160.8 Ktx/sec 160.4 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 131.1±0.49µs 129.9±0.53µs 7.4 Ktx/sec 7.5 Ktx/sec
sqlite 💿 location multi_index 1000 100 204.5±1.19µs 202.9±1.35µs 4.8 Ktx/sec 4.8 Ktx/sec
sqlite 💿 location non_unique 0 100 51.6±3.82µs 49.0±0.22µs 18.9 Ktx/sec 19.9 Ktx/sec
sqlite 💿 location non_unique 1000 100 53.1±0.35µs 53.2±8.48µs 18.4 Ktx/sec 18.3 Ktx/sec
sqlite 💿 location unique 0 100 52.2±2.00µs 51.4±1.38µs 18.7 Ktx/sec 19.0 Ktx/sec
sqlite 💿 location unique 1000 100 56.8±0.40µs 56.0±0.22µs 17.2 Ktx/sec 17.4 Ktx/sec
sqlite 💿 person multi_index 0 100 118.1±3.59µs 117.9±3.40µs 8.3 Ktx/sec 8.3 Ktx/sec
sqlite 💿 person multi_index 1000 100 231.7±29.10µs 231.6±21.28µs 4.2 Ktx/sec 4.2 Ktx/sec
sqlite 💿 person non_unique 0 100 52.0±1.52µs 48.5±1.33µs 18.8 Ktx/sec 20.1 Ktx/sec
sqlite 💿 person non_unique 1000 100 61.6±0.33µs 59.9±0.24µs 15.9 Ktx/sec 16.3 Ktx/sec
sqlite 💿 person unique 0 100 50.1±1.21µs 50.1±1.50µs 19.5 Ktx/sec 19.5 Ktx/sec
sqlite 💿 person unique 1000 100 55.5±0.23µs 54.3±0.35µs 17.6 Ktx/sec 18.0 Ktx/sec
sqlite 🧠 location multi_index 0 100 119.7±0.42µs 118.5±1.24µs 8.2 Ktx/sec 8.2 Ktx/sec
sqlite 🧠 location multi_index 1000 100 170.7±0.43µs 169.4±0.48µs 5.7 Ktx/sec 5.8 Ktx/sec
sqlite 🧠 location non_unique 0 100 44.0±0.39µs 42.4±0.34µs 22.2 Ktx/sec 23.0 Ktx/sec
sqlite 🧠 location non_unique 1000 100 45.9±0.36µs 44.6±0.23µs 21.3 Ktx/sec 21.9 Ktx/sec
sqlite 🧠 location unique 0 100 46.1±0.57µs 45.5±0.17µs 21.2 Ktx/sec 21.4 Ktx/sec
sqlite 🧠 location unique 1000 100 49.9±0.32µs 47.5±0.26µs 19.6 Ktx/sec 20.6 Ktx/sec
sqlite 🧠 person multi_index 0 100 107.2±0.63µs 107.0±0.30µs 9.1 Ktx/sec 9.1 Ktx/sec
sqlite 🧠 person multi_index 1000 100 191.4±1.86µs 191.3±0.28µs 5.1 Ktx/sec 5.1 Ktx/sec
sqlite 🧠 person non_unique 0 100 42.1±0.34µs 42.6±0.46µs 23.2 Ktx/sec 22.9 Ktx/sec
sqlite 🧠 person non_unique 1000 100 47.0±0.92µs 46.4±0.37µs 20.8 Ktx/sec 21.0 Ktx/sec
sqlite 🧠 person unique 0 100 44.0±0.34µs 44.5±0.49µs 22.2 Ktx/sec 21.9 Ktx/sec
sqlite 🧠 person unique 1000 100 49.3±0.67µs 47.9±0.26µs 19.8 Ktx/sec 20.4 Ktx/sec
stdb_module 💿 location multi_index 0 100 746.0±104.64µs 840.6±11.94µs 1340 tx/sec 1189 tx/sec
stdb_module 💿 location multi_index 1000 100 967.0±114.35µs 1091.9±18.20µs 1034 tx/sec 915 tx/sec
stdb_module 💿 location non_unique 0 100 456.0±18.27µs 432.0±30.46µs 2.1 Ktx/sec 2.3 Ktx/sec
stdb_module 💿 location non_unique 1000 100 467.5±32.52µs 680.6±5.99µs 2.1 Ktx/sec 1469 tx/sec
stdb_module 💿 location unique 0 100 643.6±200.74µs 665.1±27.20µs 1553 tx/sec 1503 tx/sec
stdb_module 💿 location unique 1000 100 718.8±53.73µs 930.2±13.17µs 1391 tx/sec 1074 tx/sec
stdb_module 💿 person multi_index 0 100 941.2±35.14µs 998.7±178.84µs 1062 tx/sec 1001 tx/sec
stdb_module 💿 person multi_index 1000 100 1069.2±71.59µs 1045.9±6.58µs 935 tx/sec 956 tx/sec
stdb_module 💿 person non_unique 0 100 593.8±118.19µs 738.7±9.66µs 1684 tx/sec 1353 tx/sec
stdb_module 💿 person non_unique 1000 100 597.0±121.43µs 1004.5±46.55µs 1674 tx/sec 995 tx/sec
stdb_module 💿 person unique 0 100 690.3±81.12µs 721.8±100.76µs 1448 tx/sec 1385 tx/sec
stdb_module 💿 person unique 1000 100 740.6±45.56µs 716.9±2.53µs 1350 tx/sec 1394 tx/sec
stdb_module 🧠 location multi_index 0 100 591.1±81.20µs 641.1±126.62µs 1691 tx/sec 1559 tx/sec
stdb_module 🧠 location multi_index 1000 100 751.7±63.83µs 793.3±88.73µs 1330 tx/sec 1260 tx/sec
stdb_module 🧠 location non_unique 0 100 273.4±39.73µs 376.3±9.03µs 3.6 Ktx/sec 2.6 Ktx/sec
stdb_module 🧠 location non_unique 1000 100 509.9±24.78µs 471.3±11.07µs 1961 tx/sec 2.1 Ktx/sec
stdb_module 🧠 location unique 0 100 430.0±32.46µs 546.8±81.32µs 2.3 Ktx/sec 1828 tx/sec
stdb_module 🧠 location unique 1000 100 429.3±85.74µs 610.2±36.54µs 2.3 Ktx/sec 1638 tx/sec
stdb_module 🧠 person multi_index 0 100 921.4±3.12µs 937.3±3.95µs 1085 tx/sec 1066 tx/sec
stdb_module 🧠 person multi_index 1000 100 874.6±43.68µs 950.9±47.69µs 1143 tx/sec 1051 tx/sec
stdb_module 🧠 person non_unique 0 100 336.9±46.53µs 363.4±3.38µs 2.9 Ktx/sec 2.7 Ktx/sec
stdb_module 🧠 person non_unique 1000 100 439.6±38.15µs 514.2±19.17µs 2.2 Ktx/sec 1944 tx/sec
stdb_module 🧠 person unique 0 100 546.4±26.17µs 532.7±35.74µs 1830 tx/sec 1877 tx/sec
stdb_module 🧠 person unique 1000 100 605.0±64.67µs 586.4±12.45µs 1652 tx/sec 1705 tx/sec
stdb_raw 💿 location multi_index 0 100 337.9±0.49µs 341.4±0.27µs 2.9 Ktx/sec 2.9 Ktx/sec
stdb_raw 💿 location multi_index 1000 100 385.4±215.32µs 366.0±2.02µs 2.5 Ktx/sec 2.7 Ktx/sec
stdb_raw 💿 location non_unique 0 100 118.7±0.17µs 117.2±0.25µs 8.2 Ktx/sec 8.3 Ktx/sec
stdb_raw 💿 location non_unique 1000 100 120.7±0.96µs 118.9±0.95µs 8.1 Ktx/sec 8.2 Ktx/sec
stdb_raw 💿 location unique 0 100 242.4±6.14µs 245.2±0.61µs 4.0 Ktx/sec 4.0 Ktx/sec
stdb_raw 💿 location unique 1000 100 259.1±1.42µs 263.0±1.32µs 3.8 Ktx/sec 3.7 Ktx/sec
stdb_raw 💿 person multi_index 0 100 710.4±12.46µs 718.3±1.92µs 1407 tx/sec 1392 tx/sec
stdb_raw 💿 person multi_index 1000 100 785.5±484.23µs 746.7±1.28µs 1273 tx/sec 1339 tx/sec
stdb_raw 💿 person non_unique 0 100 217.2±0.67µs 219.7±0.34µs 4.5 Ktx/sec 4.4 Ktx/sec
stdb_raw 💿 person non_unique 1000 100 219.3±0.42µs 222.6±0.37µs 4.5 Ktx/sec 4.4 Ktx/sec
stdb_raw 💿 person unique 0 100 429.2±0.70µs 433.4±0.65µs 2.3 Ktx/sec 2.3 Ktx/sec
stdb_raw 💿 person unique 1000 100 444.5±0.74µs 452.0±0.85µs 2.2 Ktx/sec 2.2 Ktx/sec
stdb_raw 🧠 location multi_index 0 100 293.7±0.44µs 297.1±0.48µs 3.3 Ktx/sec 3.3 Ktx/sec
stdb_raw 🧠 location multi_index 1000 100 319.5±0.47µs 322.7±0.77µs 3.1 Ktx/sec 3.0 Ktx/sec
stdb_raw 🧠 location non_unique 0 100 75.8±0.05µs 73.3±1.15µs 12.9 Ktx/sec 13.3 Ktx/sec
stdb_raw 🧠 location non_unique 1000 100 77.2±0.18µs 74.8±0.16µs 12.6 Ktx/sec 13.1 Ktx/sec
stdb_raw 🧠 location unique 0 100 197.9±0.49µs 200.3±0.73µs 4.9 Ktx/sec 4.9 Ktx/sec
stdb_raw 🧠 location unique 1000 100 215.5±0.41µs 219.0±0.29µs 4.5 Ktx/sec 4.5 Ktx/sec
stdb_raw 🧠 person multi_index 0 100 616.2±1.76µs 618.9±0.53µs 1622 tx/sec 1615 tx/sec
stdb_raw 🧠 person multi_index 1000 100 645.4±3.27µs 649.6±0.83µs 1549 tx/sec 1539 tx/sec
stdb_raw 🧠 person non_unique 0 100 127.2±0.10µs 126.4±0.19µs 7.7 Ktx/sec 7.7 Ktx/sec
stdb_raw 🧠 person non_unique 1000 100 129.3±0.36µs 129.5±0.25µs 7.6 Ktx/sec 7.5 Ktx/sec
stdb_raw 🧠 person unique 0 100 336.9±0.63µs 339.5±0.60µs 2.9 Ktx/sec 2.9 Ktx/sec
stdb_raw 🧠 person unique 1000 100 353.5±0.57µs 357.6±0.47µs 2.8 Ktx/sec 2.7 Ktx/sec

Full table iterate

db on disk schema index type new latency old latency new throughput old throughput
sqlite 💿 location unique 9.4±0.16µs 8.8±0.16µs 103.5 Ktx/sec 110.6 Ktx/sec
sqlite 💿 person unique 10.1±0.12µs 9.3±0.17µs 96.8 Ktx/sec 105.4 Ktx/sec
sqlite 🧠 location unique 8.3±0.18µs 7.7±0.15µs 117.9 Ktx/sec 127.3 Ktx/sec
sqlite 🧠 person unique 8.7±0.11µs 8.1±0.14µs 111.9 Ktx/sec 120.4 Ktx/sec
stdb_module 💿 location unique 46.8±5.68µs 49.5±4.50µs 20.9 Ktx/sec 19.7 Ktx/sec
stdb_module 💿 person unique 53.2±9.16µs 62.0±9.09µs 18.4 Ktx/sec 15.8 Ktx/sec
stdb_module 🧠 location unique 48.7±4.15µs 50.7±5.23µs 20.1 Ktx/sec 19.2 Ktx/sec
stdb_module 🧠 person unique 52.5±10.04µs 57.5±9.81µs 18.6 Ktx/sec 17.0 Ktx/sec
stdb_raw 💿 location unique 9.0±0.01µs 9.0±0.02µs 108.6 Ktx/sec 108.5 Ktx/sec
stdb_raw 💿 person unique 9.0±0.24µs 9.0±0.00µs 107.9 Ktx/sec 108.5 Ktx/sec
stdb_raw 🧠 location unique 9.0±0.10µs 8.9±0.07µs 109.1 Ktx/sec 109.2 Ktx/sec
stdb_raw 🧠 person unique 8.9±0.01µs 8.9±0.01µs 109.1 Ktx/sec 109.2 Ktx/sec

Find unique key

db on disk key type load new latency old latency new throughput old throughput
sqlite 💿 u32 1000 2.4±0.01µs 2.3±0.01µs 415.2 Ktx/sec 415.9 Ktx/sec
sqlite 🧠 u32 1000 1144.6±5.95ns 1133.7±3.78ns 853.2 Ktx/sec 861.4 Ktx/sec
stdb_module 💿 u32 1000 24.2±2.24µs 24.7±1.71µs 40.3 Ktx/sec 39.5 Ktx/sec
stdb_module 🧠 u32 1000 25.2±2.01µs 24.5±1.69µs 38.7 Ktx/sec 39.8 Ktx/sec
stdb_raw 💿 u32 1000 1952.7±5.27ns 1989.7±6.79ns 500.1 Ktx/sec 490.8 Ktx/sec
stdb_raw 🧠 u32 1000 1888.2±3.34ns 1914.4±4.77ns 517.2 Ktx/sec 510.1 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.7±0.02µs 5.6±0.02µs 172.8 Ktx/sec 173.6 Ktx/sec
sqlite 💿 string non_indexed 1000 10 55.2±0.48µs 49.8±0.14µs 17.7 Ktx/sec 19.6 Ktx/sec
sqlite 💿 u64 indexed 1000 10 5.4±0.01µs 5.4±0.05µs 179.5 Ktx/sec 180.1 Ktx/sec
sqlite 💿 u64 non_indexed 1000 10 34.1±0.14µs 33.1±0.21µs 28.6 Ktx/sec 29.5 Ktx/sec
sqlite 🧠 string indexed 1000 10 4.3±0.02µs 4.2±0.04µs 229.7 Ktx/sec 230.7 Ktx/sec
sqlite 🧠 string non_indexed 1000 10 53.8±0.46µs 48.8±0.83µs 18.2 Ktx/sec 20.0 Ktx/sec
sqlite 🧠 u64 indexed 1000 10 4.0±0.02µs 4.0±0.02µs 241.3 Ktx/sec 241.8 Ktx/sec
sqlite 🧠 u64 non_indexed 1000 10 32.8±0.08µs 32.0±0.18µs 29.7 Ktx/sec 30.5 Ktx/sec
stdb_module 💿 string indexed 1000 10 35.0±2.03µs 35.2±3.07µs 27.9 Ktx/sec 27.8 Ktx/sec
stdb_module 💿 string non_indexed 1000 10 177.9±5.84µs 165.0±2.64µs 5.5 Ktx/sec 5.9 Ktx/sec
stdb_module 💿 u64 indexed 1000 10 32.8±2.60µs 32.5±2.65µs 29.8 Ktx/sec 30.0 Ktx/sec
stdb_module 💿 u64 non_indexed 1000 10 140.4±1.80µs 139.6±5.46µs 7.0 Ktx/sec 7.0 Ktx/sec
stdb_module 🧠 string indexed 1000 10 36.7±2.61µs 34.7±3.53µs 26.6 Ktx/sec 28.2 Ktx/sec
stdb_module 🧠 string non_indexed 1000 10 166.9±1.17µs 160.7±1.37µs 5.9 Ktx/sec 6.1 Ktx/sec
stdb_module 🧠 u64 indexed 1000 10 30.7±3.24µs 31.3±2.86µs 31.8 Ktx/sec 31.2 Ktx/sec
stdb_module 🧠 u64 non_indexed 1000 10 139.3±1.45µs 135.4±0.86µs 7.0 Ktx/sec 7.2 Ktx/sec
stdb_raw 💿 string indexed 1000 10 4.4±0.01µs 4.5±0.01µs 223.5 Ktx/sec 216.3 Ktx/sec
stdb_raw 💿 string non_indexed 1000 10 148.8±0.56µs 136.5±0.48µs 6.6 Ktx/sec 7.2 Ktx/sec
stdb_raw 💿 u64 indexed 1000 10 4.2±0.05µs 4.4±0.01µs 232.4 Ktx/sec 222.5 Ktx/sec
stdb_raw 💿 u64 non_indexed 1000 10 125.3±0.17µs 113.0±0.14µs 7.8 Ktx/sec 8.6 Ktx/sec
stdb_raw 🧠 string indexed 1000 10 4.3±0.01µs 4.4±0.01µs 226.6 Ktx/sec 220.5 Ktx/sec
stdb_raw 🧠 string non_indexed 1000 10 145.4±0.49µs 131.0±0.20µs 6.7 Ktx/sec 7.5 Ktx/sec
stdb_raw 🧠 u64 indexed 1000 10 4.1±0.01µs 4.3±0.02µs 236.3 Ktx/sec 225.9 Ktx/sec
stdb_raw 🧠 u64 non_indexed 1000 10 124.2±0.43µs 112.8±0.12µs 7.9 Ktx/sec 8.7 Ktx/sec

Serialize

schema format count new latency old latency new throughput old throughput
location bsatn 100 1590.6±1.92ns 1586.1±3.21ns 60.0 Mtx/sec 60.1 Mtx/sec
location json 100 3.7±0.04µs 3.1±0.02µs 26.0 Mtx/sec 30.5 Mtx/sec
location product_value 100 551.5±0.57ns 602.0±5.30ns 172.9 Mtx/sec 158.4 Mtx/sec
person bsatn 100 2.4±0.03µs 2.3±0.01µs 39.7 Mtx/sec 41.0 Mtx/sec
person json 100 5.3±0.04µs 4.8±0.05µs 18.0 Mtx/sec 19.9 Mtx/sec
person product_value 100 1028.4±1.77ns 1034.2±2.35ns 92.7 Mtx/sec 92.2 Mtx/sec

Module: invoke with large arguments

arg size new latency old latency new throughput old throughput
64KiB 62.8±8.72µs 72.4±5.19µs - -

Module: print bulk

line count new latency old latency new throughput old throughput
1 22.2±1.10µs 23.6±1.76µs - -
100 189.4±1.73µs 190.7±0.92µs - -
1000 1803.7±511.06µs 1878.6±297.32µs - -

Remaining benchmarks

name new latency old latency new throughput old throughput

Please sign in to comment.