Benchmarks.
How Latte's INLA fits compare on the same models, against an identical likelihood and prior — so the only difference is the approximation. Accuracy is the KS distance between the two engines' marginals (0 = identical, reported max / median per block); speed is warm-fit wall-clock (cold includes Julia's first-run compilation). Every figure links to a runnable script in benchmark/, versions and hardware recorded.
Comparison against R-INLA
Accuracy against wall-clock.
each point is one model · vs R-INLA on the same posterior
Dot = median KS of the latent marginals; whisker reaches the worst single component. Large speedups at small n partly reflect R-INLA's fixed per-call overhead, not raw compute. Paraná's SPDE field sits above the band — weakly identified (variance- not mean-limited), a floor both engines hit. Full per-component numbers in the receipts below.
Scaling in n
The same spatial Poisson–Matérn (SPDE) model fit at five mesh resolutions, on a mesh handed identically to both engines — so the curves isolate how each scales with the latent dimension, not the problem setup.
Wall-clock against problem size.
one SPDE model on a shared mesh · five resolutions · same posterior
| n | Latte serial | Latte threaded | R-INLA serial | R-INLA parallel | Latte thr ÷ R-INLA par |
|---|---|---|---|---|---|
| 529 | 0.27s | 0.21s | 2.10s | 3.03s | 14.7× |
| 1,778 | 0.95s | 0.74s | 4.04s | 2.93s | 4.0× |
| 3,878 | 3.07s | 2.72s | 7.75s | 4.03s | 1.5× |
| 9,980 | 7.55s | 6.04s | 19.57s | 8.45s | 1.4× |
| 23,704 | 25.33s | 19.55s | 60.82s | 25.28s | 1.3× |
Latte's serial fit tracks R-INLA's parallel fit at the top end and beats it below it; threaded, it leads at every size. R-INLA gains more from threads (steeper self-speedup) off a slower serial baseline, so absolute wall-clock still favors Latte here. One workstation, one benchmark family. Latte threaded = 10 Julia threads; R-INLA parallel = num.threads "10:1". PARDISO unavailable on this machine, so R-INLA's inner sparse solves run serial taucs — with PARDISO its parallel times could tighten at large n.
Coming next
Cross-engine comparisons — the same model under INLA, TMB, and HMC-Laplace — plus scaling in hyperparameter dimension. A dedicated TMB comparison (Latte's tmb() against the TMB R package on matched Laplace marginal-likelihood models) will follow in a later release. Scripts land in benchmark/ as they're run.
Reproducibility
Run the benchmarks yourself; tell us when something looks off.
All benchmark scripts live in benchmark/ in the repo. Each receipt above maps to a single file.
Benchmarks are rerun for each Latte minor release and at least every six months for external package versions.
Think a comparison is unfair or outdated? Open an issue with a reproducible script. We'd rather know.