Benchmarks / Solvers

Solvers — head-to-head

basin's five general optimizers — gradient descent, Nelder–Mead, BFGS, L-BFGS, and CMA-ES — from several seeded starting points sampled uniformly in each problem's domain. Each run is capped on a fixed 20.00 ms wall-clock budget and stopped early on reaching suboptimality 1e−10, so a line that ends at the right edge of a panel never made it within the time given. Lines within a panel share the same f(x₀); lower and further left is better.

Rosenbrock

n = 10, starts sampled uniformly in [−2, 2]10.

Gradient Descent Nelder–Mead BFGS L-BFGS CMA-ES
suboptimality f(x) − f*

Seed 1 f(x₀) = 700

1e31e01e-31e-61e-91 µs10 µs100 µs1 ms10 ms

Seed 2 f(x₀) = 5836

1e41e11e-21e-51e-81 µs10 µs100 µs1 ms10 ms100 ms

Seed 3 f(x₀) = 3435

1e41e11e-21e-51e-81 µs10 µs100 µs1 ms10 ms

Seed 4 f(x₀) = 7689

1e41e11e-21e-51e-81 µs10 µs100 µs1 ms10 ms100 ms

Seed 5 f(x₀) = 2849

1e41e11e-21e-51e-81 µs10 µs100 µs1 ms10 ms

Seed 6 f(x₀) = 5014

1e41e11e-21e-51e-81 µs10 µs100 µs1 ms10 ms100 ms

wall-clock time

Measured 2026-05-28 on AMD Ryzen 9 7900 12-Core Processor (linux/x64). Every solver runs on the Vec<f64> backend, capped at 20.00 ms per (solver, seed) run. Each per-iteration timestamp is the median over 11 repetitions of the same deterministic run; absolute times are machine-specific — compare curves within a panel, not across machines. Some seeds land in the basin of Rosenbrock's spurious local minimum near (−1, 1, …, 1) (which appears for n ≥ 4); a line that flattens around f ≈ 4 is a solver caught in that trap.

For the basin-versus-other-libraries view, see the competitors axis; for backend cost on the same solvers, see the backends axis. To watch the same solvers converge interactively, try the visualizer.