Files
2nd/01_Archive/2026-04-20/Throttling Debouncing.md

38 lines
4.0 KiB
Markdown

---
id: P-REINFORCE-AUTO-92BBDE
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - Throttling Debouncing"
---
# [[Throttling Debouncing|Throttling Debouncing]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 스크롤, 화면 크기 조절(Resize), 타이핑 등 짧은 시간 동안 과도하게 발생하는 사용자 이벤트의 실행 빈도를 제어하여 애플리케이션의 성능 병목 현상을 방지하는 최적화 기법입니다.
## 📖 구조화된 지식 (Synthesized Content)
**1. 필요성 및 성능 영향** 사용자의 화면 크기 조절, 키보드 타이핑, 마우스 스크롤 같은 이벤트는 아주 짧은 시간에 수십~수백 번씩 연속적으로 발생합니다. 이 이벤트마다 무거운 연산이나 React의 상태 업데이트를 수행하면 매 틱(tick)마다 불필요한 리렌더링이나 재계산이 발생하여 심각한 성능 병목(Bottleneck) 현상을 초래할 수 있습니다.
**2. 디바운싱 (Debouncing)** 연이어 발생하는 이벤트를 하나로 묶어, 특정 시간 동안 추가적인 이벤트가 발생하지 않을 때 마지막에 단 한 번만 이벤트 핸들러를 실행하는 기법입니다. 예를 들어 `lodash` 라이브러리의 `debounce` 함수를 사용하여 사용자가 창 크기 조절을 멈춘 뒤 200ms가 지났을 때만 리사이즈 로직이 처리되도록 제한할 수 있습니다.
**3. 스로틀링 (Throttling)** 이벤트가 연속해서 발생하더라도 정해진 시간 간격 당 최대 한 번씩만 함수가 실행되도록 보장하는 기법입니다. (이전 대화 참고: Web Worker로 마우스의 위치를 지속적으로 포워딩할 때, 메시지 큐에 과부하가 걸리지 않도록 주기를 조절하는 데 유용하게 사용됩니다.)
**4. 구현 시 번들 최적화 (Tree Shaking) 주의사항** 이러한 기법을 적용하기 위해 `lodash`와 같은 외부 유틸리티 라이브러리를 사용할 때는 번들 크기 최적화에 주의해야 합니다. `import _ from 'lodash';`와 같이 전체 라이브러리를 불러오면 번들 크기가 크게 증가하므로, `import { debounce } from 'lodash-es';` 또는 `import debounce from 'lodash-es/debounce';` 형태로 필요한 개별 함수만 가져와 트리 쉐이킹(Tree Shaking)이 완벽히 적용되도록 작성해야 합니다.
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[React Performance Optimization|React Performance Optimization]], [[Tree Shaking (번들 크기 최적화)|Tree Shaking (번들 크기 최적화)]], [[이벤트 포워딩(Event Forwarding)|이벤트 포워딩 (Event Forwarding)]], [[불필요한 리렌더링 방지|불필요한 리렌더링 방지]]
- **Projects/Contexts:** 실시간 검색 입력(Typing) 지연 처리, [[반응형 윈도우 리사이즈(Resize) 이벤트 처리|반응형 윈도우 리사이즈(Resize) 이벤트 처리]], 웹 워커 통신 지연 최소화
- **Contradictions/Notes:** 스로틀링과 디바운싱은 무거운 연산을 줄이고 프레임 드랍을 막아주지만, 설정한 대기 시간이 너무 길면 화면 업데이트가 늦어져 사용자에게 끊기는 느낌을 줄 수 있습니다. 따라서 작업의 성격(예: 즉각 반응이 필요한 드래그, 멈춘 후 반응해도 되는 윈도우 리사이즈)에 맞추어 적절한 지연 시간을 타협하는 것이 중요합니다.
---
_Last updated: 2026-04-14_
- Raw Source: 00_Raw/2026-04-20/Throttling & Debouncing.md
---