목록 보기
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 계산 제거
  • 렌더링 단계에서 반복 탐색과 중복 계산을 분리하고 계산 결과 재사용

다음 읽기

같은 회사의 연관 글

캐시 전략으로 푼 응답 지연 문제

메인 화면 응답 지연을 캐시 우선 렌더링과 백그라운드 갱신으로 개선했습니다. 메시지 큐로 조회 부하를 분산해 체감 속도와 운영 안정성을 함께 높였습니다.

넥스트리
넥스트리
백엔드

댓글 0

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

댓글을 불러오는 중...