메인 스레드 양보는 응답성을 높여도 총 작업량을 줄이지 않는다
같은 일을 여러 태스크로 나누어 제어권을 양보하면 입력·렌더링이 실행될 기회를 얻지만, 처리할 작업 자체를 없애지는 않으며 전체 완료 시간이 줄어든다는 보장은 없다. 응답성·점유 시간·총 작업량·완료 시간을 구분해 최적화를 판단한다.
실제 태스크 경계를 만들기
함수를 나눠 같은 동기 실행 안에서 호출하는 것만으로 제어권이 넘어가지는 않는다. 태스크 경계에서 실제로 양보해야 다른 작업이 실행될 기회가 생긴다. 지나치게 자주 양보하면 재개 비용이 누적될 수 있고, 쪼갤 수 없는 동기 호출은 다른 전략이 필요하다.
작업 분할은 언제 실행할지를 바꾸는 선택이다. 중복 계산·불필요한 작업을 제거하는 것은 해야 할 양을 바꾸며, 별도 스레드로 옮기는 것은 실행 위치와 전달 비용을 바꾼다. 목적에 따라 여러 전략을 조합하고 실제 사용자 응답과 전체 완료 시간을 각각 확인한다.
근거와 연결
- Kciter의 브라우저의 메인 스레드는 비싸다: 작업 분할·묶기·우선순위·미루기와 제거/이동을 구분한 설명. 게시 2026-07-12, 확인 2026-09-30.
- web.dev의 Optimize long tasks: 실제 양보·재개 비용과 응답성/완료 시간의 절충. 확인 2026-09-30. 브라우저별 API 지원 목록은 이 노트에 고정하지 않았다.
- 기술 글의 설명 구조와 시각 자료 - Kciter > 기술 내용에서 남길 판단과 보장 경계: 데모의 일부 조작과 성능 실측의 경계.
- UI 완성도는 실제 내용과 상태 변화 속에서 확인한다
- 비교 데모는 공통 조건과 바뀌는 변수를 드러낸다
- 지각 해상도를 높이는 학습
- Atomic Notes