Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Benchmarks & Performance

Headline numbers (Apple M4, release profile, median of 5 runs; methodology and full tables in the repository’s doc/performance.md): timing covers optimize() only; costs are computed by the harness directly from the input files so values are comparable across implementations.

Pose graph optimization (LM)

datasetverticesedgesapex timefinal χ²
ring434459~4 ms2.2e-2
M35003 5005 453~60 ms1.5
city1000010 00020 687~110 ms4.4
sphere25002 5004 949~190 ms21.3
parking-garage1 6616 275~85 ms0.62
torus3D5 0009 048~930 ms236
cubicle5 75016 869~990 ms1 692

Bundle adjustment (LM + iterative Schur, reprojection RMSE)

datasetcameraspointsobservationstimefinal RMSE
Trafalgar25765 132225 911~4 s0.81 px
Dubrovnik356226 7301 255 268~48 s0.79 px
Ladybug1 723156 502678 718~77 s0.88 px
Venice1 778993 9235 001 946~56 s0.75 px

Reproducing

cargo bench --bench odometry_pose_benchmark   # pose graphs (Rust + C++ solvers)
APEX_BENCH_RUST_ONLY=1 cargo bench --bench bundle_adjustment_benchmark   # apex rows only
bash benches/tools/run_repeated.sh odometry_pose_benchmark 5            # N repeats, archived CSVs

Kernel-level micro-benchmarks (normal-equation formation, assembly, PCG) live in benches/micro_kernels.rs and run under Criterion:

cargo bench --bench micro_kernels