Wasm vs JavaScript benchmark Browse Catalog Experiment Evidence data v1

DOM & Web UI Workload · 100,000 Rows · 300 Events · dom.virtualized-grid.v1

100,000-row virtualized grid

A fresh worker schedules 300 trace events from 0 through 29,900 ms. Each slot must stay within ±20 ms of its 100 ms offset, and adjacent events must remain 80–120 ms apart. Each event transfers one typed command batch; the host applies its scroll offset and commands, waits for a browser paint, and then acknowledges the event. A missed slot rejects the run. Both targets run the identical trace; exact scheduling + DOM output is verified before any timing. The page uploads and stores nothing.

Run Benchmark Loop

Ready. Select target and loop iterations, then click Start.

What it does

Virtualized scrolling over 100,000 seeded rows with a strict paint-acknowledged event cadence — the workload behind infinite feeds and data grids.

Why compare Wasm vs JS

Scheduling typed command batches, scroll math, and DOM mounting under a hard timing budget is exactly where a Wasm implementation and the JS engine's own paths genuinely differ.

Fixed contract

100,000 seeded rows; 300 events at 100 ms trace cadence; 960×480 CSS-pixel viewport; DPR 2; 24 px rows; 20 visible rows; four-row overscan; at most 28 mounted row nodes.

Correctness evidence

The benchmark loop above times both engines. This section runs the frozen 300-event trace through either engine and validates the applied host DOM + exact result — timing and correctness never mix.

Ready. No worker is running.

Applied host DOM

Exact textual result

No result yet.

Source & build provenance