Files
2026-07-13 13:09:14 +08:00

3.1 KiB

DOM density and memory audit

Date: 2026-05-22

Baseline: upstream/main at 6c83b10 Candidate: perf/dom-density-audit

Method

  • Built both baseline and candidate as production Vite bundles.
  • Ran each measurement in a fresh headless Google Chrome process with a fresh profile.
  • Rendered the same synthetic large-result scenarios by driving the app stores and mocked desktop APIs.
  • Ran 3 isolated samples per scenario and reported the median.
  • Collected RSS from the full Chrome process tree after forced garbage collection. RSS includes browser process overhead, so the comparable signal is the delta.
  • Collected JS heap with Runtime.getHeapUsage after HeapProfiler.collectGarbage and globalThis.gc().

Memory Results

Scenario Before RSS MiB After RSS MiB RSS Delta MiB Before JS Heap MiB After JS Heap MiB JS Heap Delta MiB
Grid 1000 x 20 1226.3 1214.2 -12.1 19.6 16.6 -3.0
Grid 1000 x 200 1462.5 1399.7 -62.8 96.7 67.5 -29.2
Redis list value 3000 1396.6 1185.4 -211.2 82.7 11.3 -71.4
Redis hash value 3000 1402.3 1183.8 -218.5 83.7 11.5 -72.2
Redis stream 1000 x 5 1444.3 1182.1 -262.2 92.5 13.3 -79.2

DOM Results

Scenario Before DOM Elements After DOM Elements Element Delta Before DOM Nodes After DOM Nodes Node Delta Listener Delta
Grid 1000 x 20 6937 1837 -5100 12644 8564 -4080 -1020
Grid 1000 x 200 65257 14257 -51000 106784 65984 -40800 -10200
Redis list value 3000 57293 1096 -56197 82472 2760 -79712 -11839
Redis hash value 3000 57295 1098 -56197 82478 2766 -79712 -11839
Redis stream 1000 x 5 62281 1180 -61101 96450 2928 -93522 -14759

Notes

  • The grid reduction comes from mounting the cell detail action only for the hovered or currently open detail cell.
  • The Redis reduction comes from virtualizing large list, set, hash, sorted set, and stream value rows.
  • Existing user operations remain available: the cell detail action appears on hover or while its detail panel is open, and Redis row actions still operate on the visible virtualized rows.