Skip to content

Benchmarks

QuantWave publishes only measured numbers from the reproducible harness in benchmarks/. No hand-written throughput claims.

Last harness run: 2026-08-12T04:34:59.109501+00:00 Harness version: 2 Dataset: 1,000,000 rows, seed 1364656129 Host CPU: x86_64 · RAM: 15.6 GB · OS: Linux 6.17.0-1022-azure

Regenerate: python benchmarks/harness.py && python scripts/render_benchmarks.py

Memory Usage

Measured on 1,000,000 synthetic OHLCV rows (+ symbol column where noted).

OHLCV + Symbol

Framework Memory Usage Footprint
QuantWave (Polars) 44.82 MB 1.0x
Pandas 52.45 MB 1.17x

High-cardinality strings (Symbol column only)

Framework Memory Footprint
QuantWave (Polars) 6.68 MB 1.0x
Pandas 14.31 MB 2.14x

Speed & Throughput

Rust streaming throughput

  • Rows: 1,000,000
  • Source: quantwave-core/benchmark_export
Indicator Mode Time (ms)
SMA (20) streaming 5.3005
RSI (14) streaming 0.0000
SuperTrend (10,3) streaming 7.0151

Criterion HTML reports: cargo bench -p quantwave-core --bench indicator_throughput (100,000 rows per case).

Python Comparisons

SMA batch throughput (SMA(20), 1000000 rows)

Correctness pre-check on 1k rows passed before timing.

Library Time (ms)
QuantWave (.ta) 9.0211
Polars rolling_mean 8.8490
Pandas rolling 15.9358
TA-Lib not installed

Library versions: numpy 2.5.2, pandas 3.0.5, pandas_ta not_installed, polars 1.43.2, quantwave 0.7.0, talib not_installed

Streaming Latency

Per-tick streaming latency (10,000 samples)

Source: per_tick_instrumented — real per-tick instrumentation, not batch ms relabeled.

Indicator Mean (ns) P99 (ns)
SMA (20) 35.6 41.0
RSI (14) 32.2 40.0

Methodology

  • Data: deterministic synthetic OHLCV from benchmarks/data.py (fixed seed, committed generator).
  • Rust: cargo run -p quantwave-core --release --bin benchmark_export + Criterion benches (cargo bench -p quantwave-core --bench indicator_throughput). The head-to-head against the talib-rs oracle lives in cargo bench -p quantwave-core --bench talib_comparison (a bench, not a bin, so talib-rs stays out of the shipped dependency graph).
  • Python: benchmarks/python_comparisons.py — correctness pre-check on 1k rows, then time.perf_counter timings.
  • Docs: scripts/render_benchmarks.py renders this page from benchmarks/results/latest.json only.
  • CI: scripts/check_benchmark_claims.py fails on orphan performance numbers in README/docs.

Page rendered from JSON — edit benchmarks/results/latest.json via the harness, not tables here.