What this page tests Main-thread frame budgeting under a continuous requestAnimationFrame loop. Both columns update the same logical field (record[0].score) each frame; pressure repeats that work multiple times per frame. The JSON column mutates a parsed array and, every K frames, JSON.stringifys and JSON.parses the full ~15 MB document (simulating a replaced server payload). The NXS column writes via DataView.setFloat64 at a cached byte offset into mapped .nxb bytes — no per-frame allocations. The stats and sparklines show FPS, per-path work time, and frames over a 20 ms budget; the Long tasks panel lists browser longtask entries (>50 ms), which usually spike on the JSON path when re-parse aligns with rAF.
10
1
Loaded 100,000 records — NXS 13.1 MB, JSON 14.4 MB.

JSON path

Mutates parsed[0].score; re-serialises + re-parses the full 15 MB array every K frames.

FPS
0
Last frame
Avg frame
Max frame
Dropped (>20ms)
0
50 most recent work-times · red > 20 ms (over budget)

NXS path

In-place DataView.setFloat64 at the cached byte offset of record 0's score. Zero allocations per frame.

FPS
0
Last frame
Avg frame
Max frame
Dropped (>20ms)
0
50 most recent work-times · red > 20 ms (over budget)

Long tasks (PerformanceObserver)

Entries of type longtask (> 50 ms) reported by the browser while the demo runs. If the JSON path is dominating the main thread, they land here.

No long tasks observed.