This repository now includes a Criterion-based benchmark harness for torii-core.
# 1) Establish and save a baseline snapshot
./scripts/perf/run_baseline.sh
# 2) Compare current code against a saved baseline
./scripts/perf/compare_to_baseline.sh perf/baselines/<timestamp>The comparison script labels only changes >=10% as IMPROVED or REGRESSED.
# Compile only
cargo bench -p torii --bench perf_harness --no-run
# Full run
cargo bench -p torii --bench perf_harness
# Fast local sanity run
cargo bench -p torii --bench perf_harness -- --sample-size 10 --measurement-time 0.1 --warm-up-time 0.1Criterion reports are written under:
target/criterion/benches/perf_harness.rs includes these benchmark groups:
common_conversionsdecoder_throughputdecoder_contextetl_envelopegrpc_subscription_managersink_fanouthttp_coreextractor_retry_policyengine_db_coreerc20_storage
crates/torii-common/src/lib.rscrates/torii-erc20/src/decoder.rscrates/torii-erc721/src/decoder.rscrates/torii-erc1155/src/decoder.rscrates/torii-erc20/src/storage.rssrc/etl/decoder/context.rssrc/etl/engine_db.rssrc/etl/sink/multi.rssrc/etl/extractor/retry.rssrc/etl/envelope.rssrc/grpc.rssrc/http.rs
Current baseline for optimization tracking:
perf/baselines/20260211T182042ZRecent retained gains versus that baseline (threshold >=10%):
engine_db_core/insert_block_timestamps/32:+87.25%engine_db_core/insert_block_timestamps/128:+94.48%engine_db_core/insert_block_timestamps/512:+95.71%engine_db_core/insert_block_timestamps/2048:+96.85%
No retained <= -10% regressions in the final comparison run.
- Deterministic fixtures are generated in the benchmark harness.
- Async decoder benchmarks run on a dedicated current-thread Tokio runtime.
- Storage benchmarks include both write-path (
insert_transfers_batch) and read-path (get_transfers_filtered). - Throughput is tracked for batch-size variants.
- Storage write benchmarks append unique rows during measurement, so compare results across runs only when using consistent sample/time settings.
- Add dedicated suites for
src/etl/extractor/event.rsandsrc/etl/identification/registry.rsusing fixture/replay batches. - Add storage benchmarks for
crates/torii-erc721/src/storage.rsandcrates/torii-erc1155/src/storage.rs. - Add a perf regression CI job and fail threshold for critical benches.