Interactive benchmarks
Browser demos
Live comparisons of NXS versus JSON and CSV — served with COOP/COEP headers so SharedArrayBuffer and worker handoffs work as in production.
- Benchmark (NXS vs JSON vs CSV)What is tested: (1) Open — full
JSON.parseand CSV row parse vsNxsReader(header + tail-index, no full parse). (2) Warm random access — readusernamefor a random record index. (3) Multi-field access — four fields per random record (username,age,balance,active). (4) Cold pipeline — fetch + open + first field (realistic page load). (5) Aggregate — sumscoreover all rows (JSON loop, raw CSV column scan, NXS bulk reducer with optional WASM). - TickerWhat is tested: Updating record 0’s
scoreevery frame under adjustable pressure (updates per frame). JSON path mutates then periodically re-serialises and re-parses the full ~15 MB document (simulating a pushed payload you cannot patch in place). NXS path writes viaDataView.setFloat64at a cached offset — no per-frame allocations. Compare FPS, last/avg/max frame time, frames over a 20 ms budget (“drops”), and sparklines. - WorkersWhat is tested: Sender-side
postMessagecost — JSON pays full structured-clone time per worker (main thread blocks); NXS passes a SAB view so handoff is O(1) bytes copied when COOP/COEP is enabled. Worker init (module load + reader setup) is timed separately. With the writer checkbox, worker 0 patches record 42’sscoreevery 50 ms and workers 1–3 read the same field — updates propagate across threads only when a realSharedArrayBufferis used; otherwise the UI documents the per-worker copy fallback. - Log explorerWhat is tested: Scrolling and seeking through very large record counts (title uses ~10M lines) using a fixed row pool, a scaled inner spacer, and mapping scroll position to NXS record indices for zero-copy-style field reads (timestamp, component, message, score, flag). Exercises keyboard navigation, in-viewport row reuse, and whether the UI stays smooth while random-accessing the binary tail-index.
- Report layoutWhat this is: Not a benchmark page — upload or paste data, see which layout fits streaming vs sum vs random access, and render a chart from columnar field buffers (Chart.js). Answers “which layout do I use for my report?” on your own numbers.
- WAL / spans