Documentation
¶
Overview ¶
qpbench times Quadprog against OSQP v1.0.0 and the quadprog package in interleaved rounds, one thread each, and prints the Markdown tables of docs/perf.md.
Usage (from the repository root):
cd tools/qpbench && GOWORK=off go run . --repo ../.. --rounds 5
What is compared (design-qp.md section 7):
- ADMM against OSQP on instances of the classes of osqp_benchmarks (random QP, equality QP, portfolio, Lasso, Huber, SVM, control; problem_classes/*.py, opened for this) and on small dense ones: setup time and solve time apart, iteration counts side by side. OSQP's times are its own (info.setup_time, info.solve_time, measured in C), as osqp_benchmarks reports them.
- the active set against the quadprog package (Goldfarb–Idnani, Fortran) on dense positive definite instances, n up to 1000: setup plus solve against one call, the call overhead of an empty-sized solve subtracted.
- the share of our ADMM time spent in go-sparse's LDLᵀ refactorisation and triangular solves, reported separately from the rest.
A round is the Go benchmark followed by the reference run, on the same instance files. The 1-minute load average is checked before the first round and after each one: a round that ends above --max-load is discarded and run again, and the measurement fails if the budget of attempts runs out.
Click to show internal directories.
Click to hide internal directories.