Benchmarks
Non-demo, non-decorative pages. Each one runs a tight loop, reports a compact distribution (min / p50 / p95 / max), and lets you save the run as JSON so you can diff against past runs and iterate.
Available
Probe throughput × concurrency
Run N image probes at configurable concurrency. Reports per-probe distribution, total wall time, bytes transferred, throughput (probes/sec). Useful for picking a default concurrency for a known server.
Probe sweep · full matrix
Every strategy × every concurrency against the same N, one combined JSON. Replaces clicking through the single-config probe bench a dozen times to compare strategies. Best throughput per strategy is highlighted in the table.
Packer speed + determinism
Runs packShortestColumn and packJustifiedRows over seeded aspect arrays. Reports per-call distribution across N iterations, then verifies bit-identical output for repeated runs with the same seed.
Compare runs
Drop in saved bench JSONs; they get grouped by network label and laid out in one table so mobile-5g and home-gigabit runs sit side by side. Best throughput per group is highlighted. Handles all three bench shapes (single probe, browser sweep, node sweep).
Range sizing × format
Per-format Range-request byte inputs against a corpus of real URLs (wikimedia / flickr / iconlib / AVIF / HEIC). Reports time distribution, CORS and probe failures, and the effect of the library's re-range retry. Defaults reflect DEFAULT_RANGE_BYTES_BY_FORMAT — the table the library ships with.
First-screen strategies
Four approaches to painting a first viewport, run back-to-back against fresh cache-busts: naive <img>, prepare() with img strategy, prepare() with stream, and manifest-hydrated (no probe at all). Reports time-to-first-skeleton, all-skeletons, first-image, all-images, and bytes.
Virtual-scroll synthetic
Packs N tiles, then scripts a constant-velocity scroll from top to bottom while sampling every rAF. Reports frame-time distribution, dropped frames, active tile count, mount/unmount churn. Regressions in createVirtualTilePool surface here: rising frame times, or active-tile-count drift away from the overscan band, both fail this bench loudly.