NXS · Nyxis · Demo
Live ticker
A 60 FPS rAF loop updates record 0's score every frame on both paths. JSON re-parses the whole array every K frames (simulating a server push). NXS patches 8 bytes in place.
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.