Benchmarks

Iteration-one benchmarks are informational baselines built with Criterion. They cover the four scale-sensitive workflows named in the acceptance criteria:

  • fingerprinting and importing 1,000 small files in one transaction;

  • opening and enumerating a SQLite production containing 10,000 assets with resource and representation fingerprints;

  • resolving relocated media beneath a root containing 3,000 decoys;

  • committing repeated single-import transactions.

Run them with an optimized build:

cargo bench --locked -p postproject-storage-sqlite --bench iteration_one

Fixture construction that is not part of the operation under measurement is performed before timing where practical. The bulk-import benchmark deliberately includes fingerprint preparation because fingerprinting is part of the import contract. Resolver decoys have the same size as the target, so all 3,000 candidates reach fingerprint verification instead of being discarded by the cheap size filter. The large-production workload traverses representations, resources, and their non-empty fingerprint evidence rather than timing only the root production row.

Criterion reports are local artifacts under target/criterion and are not committed. Published numbers must record the commit, Rust version, operating system, CPU, storage device/filesystem, power policy, and full Criterion command. Results are not release gates yet; they exist to make regressions measurable.

Quick baseline

A smoke baseline captured on 2026-09-22 with --quick at commit 1e92194 produced these Criterion intervals:

Workload

Observed interval

Import and fingerprint 1,000 small files

257.42–271.36 ms

Load 10,000 assets with identity evidence

1.0835–1.0980 s

Resolve and fingerprint 3,000 same-size candidates

84.330–86.524 ms

Commit one prepared import

742.71–756.72 µs

The run used Rust 1.98.1 on Linux 7.2.5, an AMD Ryzen 7 4800H, and a Btrfs filesystem. Frequency boost was enabled and no power-policy controls were applied. Because Criterion quick mode takes few samples and the machine was not isolated, these numbers verify benchmark operation and provide an order-of- magnitude baseline; they are not release gates or publication-quality claims.