PERFORMANCE LAB · 2026-09-13

100만 행의 첫 화면을
69.0% 더 빠르게

BeautifulGrid v1.0.10과 현재 미출시 작업 트리를 동일한 Chromium fixture에서 비교한 렌더링 성능 측정 결과입니다.

비교 대상은 아직 npm에 배포되지 않은 현재 작업 트리입니다.

최초 렌더 median
−69.0%
v1.0.10562.9ms
현재 작업 트리174.5ms
4× CPU 제한 · 워밍업 1회 · 측정 7회
100만 행 heap−28.2%185.0 MiB → 132.8 MiB
스크롤 p9518.3ms1.1% 차이
1만 행 마운트−2.6%현재본이 빠름
Frozen 마운트−2.1%현재본이 빠름

01 · MOUNT

데이터가 커질수록 달라지는 최초 렌더

현재 작업 트리는 기본 경로에서 전체 행 수만큼 만들던 identity index 자료구조를 제거했습니다. 측정된 모든 구성에서 최초 렌더가 빨라졌고, 데이터가 커질수록 개선 폭이 크게 나타났습니다.

1만 행 · 20열일반 업무 화면 규모
v1.0.10181.3ms
현재176.6ms
−2.6%
10만 행 · 20열중간 규모 가상 스크롤
v1.0.10209.9ms
현재174.0ms
−17.1%
100만 행 · 20열대용량 기본 경로
v1.0.10562.9ms
현재174.5ms
−69.0%
1만 행 · 100열Frozen 3열 · 가로 스크롤
v1.0.10216.9ms
현재212.3ms
−2.1%
FINDING 01

대용량 초기화 비용은 구조적으로 감소

100만 행에서 최초 렌더 median은 562.9ms에서 174.5ms로 줄었습니다. 같은 fixture의 heap도 185.0 MiB에서 132.8 MiB로 감소했습니다.

FINDING 02

측정한 모든 구성에서 최초 렌더 개선

1만 행 기본 fixture는 2.6%, Frozen 100열 fixture는 2.1% 빨라졌습니다. 10만 행에서는 개선 폭이 17.1%까지 커집니다.

02 · SCROLL

스크롤 p95는 사실상 비슷한 범위

120 프레임 동안 처음에서 끝까지 이동한 뒤 되돌아오는 테스트에서 p95 프레임 간격은 모든 시나리오가 약 10ms였습니다. 이번 개선의 주효과는 스크롤 FPS가 아니라 대용량 최초 렌더와 메모리입니다.

시나리오v1.0.10현재차이
1만 행 · 20열18.2ms18.1ms−0.5%
10만 행 · 20열18.1ms18.2ms+0.6%
100만 행 · 20열18.1ms18.3ms+1.1%
1만 행 · 100열18.2ms18.2ms+0.0%

03 · METHOD

같은 조건, 공개된 원시 결과

숫자는 특정 머신의 절대 성능 보증이 아니라 두 소스 상태의 상대 비교입니다. 실제 프로젝트에서는 셀 renderer, 데이터 형태, 브라우저와 하드웨어에 따라 달라집니다.

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

RUNS시나리오당 7회 median

워밍업 1회 제외 · 기준선/현재본 교차 실행 · 실행마다 새 탭

해석 범위

두 버전에 공통인 고정 행 높이, 세로 가상 스크롤, Frozen 열만 비교했습니다. 편집기, 정렬·필터, 가변 행 높이와 애플리케이션 데이터 생성 시간은 이번 결과에 포함되지 않습니다. 현재 대상은 미출시 작업 트리이므로 이후 변경되면 다시 측정해야 합니다.