ALGOFFT · WASM

Starting worker…

GO · WEBASSEMBLY · NO CGO

What it costs to transform

Measured in this tab, in a dedicated worker, so the UI thread never skews the clock and Stop can actually stop. No SIMD and no threads under WebAssembly — read these numbers as the portable Go path, not algofft's AVX2/NEON peak.

Effort
—
Sizes (n)
Precision
Strategy
Planner
—
timer granularity — · cases 0 · done 0

Forward transform, median of the configured trial count. Plan construction is excluded from the timed region and reported separately. Rows in magenta never cleared 200 × the probed timer granularity and should not be read as measurements.
Run the benchmark to populate this table.
Methodology. WebAssembly runs the portable Go kernels only — no SIMD and no threads, so these figures are a floor for algofft, not its AVX2/NEON peak. Browsers clamp performance.now() as a Spectre mitigation (Chrome ~100 µs, Firefox/Safari ~1 ms) and GitHub Pages cannot send the COOP/COEP headers that would lift the clamp; the granularity actually probed in this browser is —. Nothing is timed once: each case is calibrated by doubling an iteration count until one batch clears that floor, then timed over — batches and reported as the median per transform, with the relative standard deviation alongside. Plan construction is measured separately and excluded from the transform time; the second build of the same plan is reported next to it, which is what the wisdom cache buys. Rows whose batches never reach 200 × granularity are flagged rather than hidden. The benchmark runs in a dedicated worker: the loop lives in JavaScript and calls into Go one bounded chunk at a time, because a synchronous Go call blocks the worker's event loop and a queued Stop cannot dispatch until it returns.