Throttle vs Debonuce

2025. 8. 6. 09:39·CS/이론
반응형

👋 들어가기 전

쓸 떄마다 헷갈리는 개념인, 쓰로틀과 디바운스를 이번 기회에 확실히 정리해보자.


🏁 학습할 내용

  • Throttle
    • 어원
    • 역할
    • 적용 상황과 예시
  • Debounce
    • 어원
    • 역할
    • 적용 상황과 예시

🏎️ Throttle

 

📚 어원

 

나무위크를 참고하면, 쓰로틀은 자동차 부품에서 많이쓰이는 용어로 보인다.

 

자동차의 원리를 간다하게 살펴보면 (출처는 아래 유튜브링크를 확인) 다음과 같다.

  • 연소를 위한 공기 흡입
  • 연료 투입
  • 점화 및 압축
  • 폭발
  • 동력 생성 

여기서 우리가 배울 쓰로틀은 공기 흡입을 조절하는 역할이다.

 

📌 역할

 

일정 시간간격에 최대 한번 함수가 실행

 

그렇다면, 프로그래밍에서 쓰로틀은 어떤 역할을 할까??

 

Rxmarble 사이트에서 throttle을 살펴보자.

 

모든 원소가 output이 될 수 있게, 조절해보니, x가 1일때 간격과 x가 2일 때, 간격이 다르긴하지만

같은 x값에 대해서는 일정 주기를 볼수 있다

 

저 간격보다 조금보다, 더 앞으로 옮기면, 원소가 무시된다.

 

🎯 적용 상황과 예시

 

가장 대표적으로는 스크롤, 버튼 이벤트등이 있다.

 

유저가 무의식적으로 대량의 이벤트를 보낼 수 있는 상황에 많이 쓰이는 것 같다.

 

일정시간 무시해버리면 되니깐


🎛️ Debounce

📚 어원

Debounce는 전자공학에서 유래됐다.

 

스위치가 눌렸다가 떨어질 때, 우리는 딱 한번만 눌렀다고 생각할 수 있지만, 실제로는 여러번 접촉할 수 있다.

 

이 때 기계적인 접촉으로 인해 발생하는 짧은 노이즈(잡음)를 제거하기 위해 사용되는 기술로

 

전체적인 잡은 제거, 진동을 가라 앉히는 개념이다.

📌 역할


이벤트가 발생한 후 일정 시간(delay) 동안 추가 이벤트가 없으면 실행

 

이번에도 Rxmarble 사이트에서 throttle을 살펴보자.

 

Throttle처럼 일정 간격으로 위치시키니깐, 앞에 있는 원소들이 계속 무시된다.

 

여기서 Throttle과 Debouce 모두 일정시간이라고 써있지만, 가장 큰 차이는 

 

일정시간이 Throttle은 변하지 않지만, Debouce는 마지막 원소를 기준으로 갱신되는걸 볼 수 있다.

 

🎯 적용 상황과 예시

 

가장 대표적으로는 검색창이 있다.

 

검색창에 글자가 입력될 떄마다, 서버로 API를 보내면, 서버에 많은 부하가 걸린다.

 

이 때, 디바운스를 이용해 마지막 글자 입력 후 일정시간이 지나면 서버로 1번 보내면 훨씬 부하를 줄일 수 있다.


😀 소감 및 마무리

간단하게 정리해보자.

구분 Throttle Debounce
실행 타이밍 주기적으로 실행 마지막 이벤트 이후 일정 시간 지나면 실행
실행 빈도 주기적, 정해진 간격마다 마지막 이벤트 끝나고 한 번
사용 예시 스크롤, 리사이즈 이벤트 처리 검색어 자동완성, 입력 후 API 요청

출처

https://motor283.com/en/car-tips-mechanics-maintenance/the-throttle-or-throttle-valve-in-the-car

 

The Throttle or throttle valve in the car

In this article, we will learn about the function of the throttle and the most prominent signs that indicate a problem with it. Read more on Motor 283

motor283.com

https://velog.io/@bgyoons/%EB%94%94%EB%B0%94%EC%9A%B4%EC%8B%B1%EA%B3%BC-%EC%93%B0%EB%A1%9C%ED%8B%80%EB%A7%81

 

디바운싱과 쓰로틀링

디바운싱과 쓰로틀링에 대해

velog.io

https://www.youtube.com/watch?v=06bQPPjnw1g

https://fearlessnight.com/rotaryHowTo/index.html

 

Fearless Night

 

fearlessnight.com

https://llu.is/throttle-and-debounce-visualized/

 

Throttle and debounce visualized

Learn the differences between throttle and debounce with an interactive demo.

llu.is

 

반응형

'CS > 이론' 카테고리의 다른 글

clang과 LLVM에 관하여  (0) 2025.12.13
[Text 시리즈 1] Typographical Concepts  (2) 2025.07.17
OAS(Open API Specification)  (1) 2025.07.04
아핀 변환(Affine Transformation)  (0) 2025.03.30
선형 변환  (0) 2025.03.30
'CS/이론' 카테고리의 다른 글
  • clang과 LLVM에 관하여
  • [Text 시리즈 1] Typographical Concepts
  • OAS(Open API Specification)
  • 아핀 변환(Affine Transformation)
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (325) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (133) N
        • UIKit (37)
        • Combine (1)
        • SwiftUI (33) N
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (20)
        • 어노테이션 (6)
        • 튜토리얼 (13)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (9)
        • 이론 (9)
        • MCP (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CS
    GIT
    AVFoundation
    프로그래머스
    dfs
    dispatch
    lifecycle
    dp
    Tuist
    Swift
    백준
    SwiftUI
    concurrency
    boostcamp
    IOS
    protocol
    Spring
    UIKit
    property
    투포인터
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
Throttle vs Debonuce
상단으로

티스토리툴바