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.

Initial render median
−69.0%
v1.0.10562.9ms
Current working tree174.5ms
4× CPU throttle · 1 warm-up · 7 measured runs
1M-row heap−28.2%185.0 MiB → 132.8 MiB
Scroll p9518.3ms1.1% difference
10K-row mount−2.6%faster in current
Frozen mount−2.1%faster in current

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.

10K rows · 20 columnsTypical business screen scale
v1.0.10181.3ms
Current176.6ms
−2.6%
100K rows · 20 columnsMid-scale virtual scrolling
v1.0.10209.9ms
Current174.0ms
−17.1%
1M rows · 20 columnsLarge fixed-height path
v1.0.10562.9ms
Current174.5ms
−69.0%
10K rows · 100 columns3 frozen columns · horizontal scroll
v1.0.10216.9ms
Current212.3ms
−2.1%
FINDING 01

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.

FINDING 02

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.

Scenariov1.0.10CurrentDifference
10K rows · 20 columns18.2ms18.1ms−0.5%
100K rows · 20 columns18.1ms18.2ms+0.6%
1M rows · 20 columns18.1ms18.3ms+1.1%
10K rows · 100 columns18.2ms18.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.

ENVIRONMENT152.0.7977.84 · macOS arm64

1440×1000 viewport · 1200×620 grid · 4× CPU throttle

SOURCESv1.0.10 ↔ working tree (1.0.10+unreleased)

1be26dc ↔ 4018e87+3ff961db9cab

RUNS7-run median per scenario

1 discarded warm-up · alternating targets · fresh tab for every run

Scope and limitations

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.