PERFORMANCE LAB · 2026-09-13
The first view of one million rows,
69.0% faster
A rendering performance comparison of BeautifulGrid v1.0.10 and the current unreleased working tree using identical Chromium fixtures.
The comparison target is the current working tree and has not been published to npm.
01 · MOUNT
Initial rendering changes with data scale
The current working tree removes identity-index structures that previously scaled with every row on the default path. Initial rendering improved in every measured configuration, with the largest gains appearing as the data set grows.
Large-scale initialization cost is structurally lower
At one million rows, median initial rendering falls from 562.9ms to 174.5ms. Heap use in the same fixture falls from 185.0 MiB to 132.8 MiB.
Initial rendering improved in every measured configuration
The 10K-row fixture is 2.6% faster, and the 100-column frozen fixture is 2.1% faster. At 100K rows, the gain rises to 17.1%.
02 · SCROLL
Scroll p95 stays in a similar range
Across 120-frame down-and-back scroll tests, p95 frame gaps remain around 10ms in every scenario. The primary benefit measured here is large-scale initial rendering and memory—not higher scrolling FPS.
| Scenario | v1.0.10 | Current | Difference |
|---|---|---|---|
| 10K rows · 20 columns | 18.2ms | 18.1ms | −0.5% |
| 100K rows · 20 columns | 18.1ms | 18.2ms | +0.6% |
| 1M rows · 20 columns | 18.1ms | 18.3ms | +1.1% |
| 10K rows · 100 columns | 18.2ms | 18.2ms | +0.0% |
03 · METHOD
Same conditions, inspectable raw results
These numbers are a relative comparison of two source states, not an absolute performance guarantee for every machine. Cell renderers, data shape, browser, and hardware will change real-world results.
1440×1000 viewport · 1200×620 grid · 4× CPU throttle
1be26dc ↔ 4018e87+3ff961db9cab
1 discarded warm-up · alternating targets · fresh tab for every run
Only fixed row height, vertical virtualization, and frozen columns shared by both versions are compared. Editors, sorting/filtering, variable row height, and application data-generation time are outside this report. Because the current target is unreleased, the benchmark must be rerun if its source changes.