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.