목록 보기
Main Thread Blocking 개선 사례
프론트엔드

Main Thread Blocking 개선 사례

넥스트리
넥스트리
2026년 9월 14일

두줄요약

수만 건 Grid 화면에서 Cell 계산과 데이터 조합이 반복되며 Main Thread Blocking이 발생했습니다. 사전 집계와 계산 결과 재사용으로 반복 연산을 줄여 개선했습니다.

문제 상황

  • 수만 건 데이터를 Grid에 표현하는 과정에서 조회보다 가공·조합·렌더링 비용이 더 크게 발생
  • Cell 생성 시마다 Related Data를 반복 탐색해 Main Thread가 길게 점유되는 구조
  • 로딩 중 다른 동작에서 화면이 멈추는 Main Thread Blocking과 Long Task 발생

원인 분석

  • Cell 단위 valueGetter에서 filter()와 map()을 반복 수행하는 O(N×M) 탐색 구조
  • 데이터 갱신, 정렬, 필터 시 Cell 값 재계산으로 동일 연산이 중복 발생
  • Virtualization이 DOM 범위만 줄일 뿐 JavaScript 연산 비용은 줄이지 못함

해결 방법

  • Related Data를 targetId 기준 Map으로 사전 집계해 Lookup 구조 구성
  • Grid 전달 전 Main Data에 relatedNames를 포함해 Cell 계산 제거
  • 렌더링 단계에서 반복 탐색과 중복 계산을 분리하고 계산 결과 재사용

다음 읽기

#성능 주제를 이어서 읽기

SpreadJS 엑셀 로딩 성능 최적화2

React와 TypeScript 기반 SpreadJS Excel 상세 화면의 초기 로딩 지연을 단계별 측정으로 분석했습니다. 모든 시트에 바인딩하던 구조를 필요한 시트만 처리하도록 바꿔 로딩 시간을 약 40~50% 줄였습니다.

넥스트리
넥스트리
프론트엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...