FrontendOptimization 2

[고급반] Step 1-3. 대용량 데이터 렌더링: Windowing 기법으로 1만 개 리스트 다루기

리액트 애플리케이션에서 성능 저하를 가장 체감하기 쉬운 순간은 수천, 수만 개의 데이터를 리스트로 렌더링할 때입니다. 브라우저가 수만 개의 DOM 노드를 한꺼번에 생성하고 관리하는 것은 메모리와 CPU에 엄청난 부담을 주기 때문입니다.이 문제를 해결하는 시니어 개발자의 무기, 윈도잉(Windowing) 혹은 가상 리스트(Virtual List) 기법에 대해 알아보겠습니다.1. 왜 대량의 리스트는 느릴까?우리가 10,000개의 아이템이 담긴 배열을 단순하게 .map()으로 렌더링하면 다음과 같은 문제가 발생합니다.초기 로딩 지연: 10,000개의 DOM 요소를 만드는 데 시간이 오래 걸립니다.메모리 점유: 브라우저가 만 개의 노드를 메모리에 들고 있어야 하므로 램 사용량이 급증합니다.스크롤 성능 저하: 스..

개발/React 2025.12.23

[고급반] Step 1-1. 재조정(Reconciliation)과 가상 DOM의 내부 원리

리액트 개발자로서 "리액트는 빠르다"라는 말을 자주 듣습니다. 하지만 왜, 어떻게 빠른지 깊이 있게 이해하는 것은 시니어 개발자로 가는 첫걸음입니다. 리액트의 핵심 엔진이라 할 수 있는 재조정(Reconciliation) 알고리즘을 파헤쳐 보겠습니다.1. 가상 DOM(Virtual DOM)은 왜 필요한가?브라우저의 실제 DOM을 조작하는 비용은 매우 비쌉니다. 요소 하나가 바뀔 때마다 브라우저는 레이아웃을 다시 계산하고(Reflow), 화면을 다시 그리는(Repaint) 복잡한 과정을 거치기 때문입니다.리액트는 이 문제를 가상 DOM이라는 개념으로 해결합니다.메모리 상의 복사본: 실제 DOM에 반영하기 전, 메모리에 가벼운 객체 형태로 DOM 트리를 먼저 만듭니다.일괄 업데이트 (Batching): 변화..

개발/React 2025.12.23
반응형