|
| 1 | +# Exact Arithmetic Performance |
| 2 | + |
| 3 | +**la-stack** v0.4.2 · `7e11f93` (HEAD) · 2026-06-08 20:39:03 UTC |
| 4 | +**Statistic**: median |
| 5 | + |
| 6 | +## Benchmark Results |
| 7 | + |
| 8 | +Comparison against baseline **v0.4.1**: |
| 9 | + |
| 10 | +Negative change = faster. Speedup > 1.00x = improvement. |
| 11 | + |
| 12 | +### D=2 |
| 13 | + |
| 14 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 15 | +|-----------|-------:|--------:|-------:|--------:| |
| 16 | +| det | 0.6 ns | 0.9 ns | +61.1% | 0.62x | |
| 17 | +| det_direct | 0.7 ns | 1.0 ns | +44.7% | 0.69x | |
| 18 | +| det_exact | 315.5 ns | 318.4 ns | +0.9% | 0.99x | |
| 19 | +| det_exact_f64 | 555.7 ns | 555.7 ns | -0.0% | 1.00x | |
| 20 | +| det_sign_exact | 0.7 ns | 1.5 ns | +128.2% | 0.44x | |
| 21 | +| solve_exact | 7.05 µs | 7.06 µs | +0.2% | 1.00x | |
| 22 | +| solve_exact_f64 | 7.50 µs | 7.67 µs | +2.3% | 0.98x | |
| 23 | + |
| 24 | +### D=3 |
| 25 | + |
| 26 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 27 | +|-----------|-------:|--------:|-------:|--------:| |
| 28 | +| det | 1.3 ns | 1.8 ns | +36.3% | 0.73x | |
| 29 | +| det_direct | 4.7 ns | 2.2 ns | **-51.9%** | 2.08x | |
| 30 | +| det_exact | 936.9 ns | 924.3 ns | **-1.3%** | 1.01x | |
| 31 | +| det_exact_f64 | 1.18 µs | 1.19 µs | +1.1% | 0.99x | |
| 32 | +| det_sign_exact | 2.4 ns | 4.2 ns | +78.1% | 0.56x | |
| 33 | +| solve_exact | 27.02 µs | 27.41 µs | +1.5% | 0.99x | |
| 34 | +| solve_exact_f64 | 28.06 µs | 27.98 µs | -0.3% | 1.00x | |
| 35 | + |
| 36 | +### D=4 |
| 37 | + |
| 38 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 39 | +|-----------|-------:|--------:|-------:|--------:| |
| 40 | +| det | 2.4 ns | 3.3 ns | +36.8% | 0.73x | |
| 41 | +| det_direct | 2.4 ns | 4.1 ns | +70.2% | 0.59x | |
| 42 | +| det_exact | 2.33 µs | 2.33 µs | -0.0% | 1.00x | |
| 43 | +| det_exact_f64 | 2.59 µs | 2.58 µs | -0.7% | 1.01x | |
| 44 | +| det_sign_exact | 5.3 ns | 6.9 ns | +30.5% | 0.77x | |
| 45 | +| solve_exact | 67.14 µs | 67.99 µs | +1.3% | 0.99x | |
| 46 | +| solve_exact_f64 | 67.86 µs | 68.51 µs | +1.0% | 0.99x | |
| 47 | + |
| 48 | +### D=5 |
| 49 | + |
| 50 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 51 | +|-----------|-------:|--------:|-------:|--------:| |
| 52 | +| det | 21.6 ns | 24.5 ns | +13.7% | 0.88x | |
| 53 | +| det_direct | 2.3 ns | 4.7 ns | +104.8% | 0.49x | |
| 54 | +| det_exact | 5.04 µs | 4.99 µs | -1.0% | 1.01x | |
| 55 | +| det_exact_f64 | 5.32 µs | 5.31 µs | -0.1% | 1.00x | |
| 56 | +| det_sign_exact | 4.97 µs | 4.99 µs | +0.3% | 1.00x | |
| 57 | +| solve_exact | 134.99 µs | 136.04 µs | +0.8% | 0.99x | |
| 58 | +| solve_exact_f64 | 137.11 µs | 138.97 µs | +1.4% | 0.99x | |
| 59 | + |
| 60 | +### Near-singular 3x3 |
| 61 | + |
| 62 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 63 | +|-----------|-------:|--------:|-------:|--------:| |
| 64 | +| det_sign_exact | 871.8 ns | 877.6 ns | +0.7% | 0.99x | |
| 65 | +| det_exact | 907.3 ns | 904.4 ns | -0.3% | 1.00x | |
| 66 | +| solve_exact | 4.31 µs | 4.25 µs | **-1.5%** | 1.02x | |
| 67 | +| solve_exact_f64 | 4.29 µs | 4.32 µs | +0.7% | 0.99x | |
| 68 | + |
| 69 | +### Large entries 3x3 |
| 70 | + |
| 71 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 72 | +|-----------|-------:|--------:|-------:|--------:| |
| 73 | +| det_sign_exact | 3.14 µs | 3.09 µs | **-1.3%** | 1.01x | |
| 74 | +| det_exact | 3.19 µs | 3.11 µs | **-2.3%** | 1.02x | |
| 75 | +| solve_exact | 84.77 µs | 83.89 µs | **-1.0%** | 1.01x | |
| 76 | +| solve_exact_f64 | 84.62 µs | 83.92 µs | -0.8% | 1.01x | |
| 77 | + |
| 78 | +### Hilbert 4x4 |
| 79 | + |
| 80 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 81 | +|-----------|-------:|--------:|-------:|--------:| |
| 82 | +| det_sign_exact | 5.3 ns | 6.9 ns | +30.4% | 0.77x | |
| 83 | +| det_exact | 2.39 µs | 2.31 µs | **-3.2%** | 1.03x | |
| 84 | +| solve_exact | 51.69 µs | 52.27 µs | +1.1% | 0.99x | |
| 85 | +| solve_exact_f64 | 52.90 µs | 53.26 µs | +0.7% | 0.99x | |
| 86 | + |
| 87 | +### Hilbert 5x5 |
| 88 | + |
| 89 | +| Benchmark | v0.4.1 | Current | Change | Speedup | |
| 90 | +|-----------|-------:|--------:|-------:|--------:| |
| 91 | +| det_sign_exact | 5.03 µs | 4.88 µs | **-2.9%** | 1.03x | |
| 92 | +| det_exact | 5.07 µs | 4.96 µs | **-2.1%** | 1.02x | |
| 93 | +| solve_exact | 105.35 µs | 102.72 µs | **-2.5%** | 1.03x | |
| 94 | +| solve_exact_f64 | 104.99 µs | 103.94 µs | -1.0% | 1.01x | |
| 95 | + |
| 96 | +## How to Update |
| 97 | + |
| 98 | +Release performance docs are generated in isolated temporary worktrees: |
| 99 | + |
| 100 | +```bash |
| 101 | +# Release PR: update docs/PERFORMANCE.md and archive the previous report |
| 102 | +just performance-release <current-tag> <previous-tag> |
| 103 | + |
| 104 | +# Historical published comparison |
| 105 | +just performance-archive-published |
| 106 | + |
| 107 | +# Explicit historical repair |
| 108 | +just performance-archive-published <current-tag> <previous-tag> |
| 109 | +``` |
| 110 | + |
| 111 | +For local scratch comparisons, use `just bench-latest` and `just bench-compare`. |
| 112 | +Those write `target/bench-reports/performance.md`. |
| 113 | + |
| 114 | +See `docs/BENCHMARKING.md` for the full comparison workflow. |
0 commit comments