sacru2red

Visual BASIC 6.0 Developer

Throttle과 Debounce

둘 다 이벤트가 너무 자주 실행되는 것이 성능에 지장을 주는 경우에 사용하는 패턴이다.

쓰로틀 Throttle

함수가 지정된 시간 동안 최대 한 번만 호출되도록 하는 패턴 (함수가 호출된 후 일정시간 동안 다시 호출되는 것을 막음)


디바운스 Debounce

함수가 호출된 시점에서 일정시간을 대기하고, 대기 중에 마지막에(또는 처음에) 호출된 함수만 실행하는 패턴


둘 다 비용상 (API 호출, 성능을 포함한)의 문제로 사용하게 된다. 쓰로틀으로 해결되는 문제는 디바운스로도 해결 할 수 있는 경우가 많다.

다만 디바운스의 방식이 훨씬 더 적게 호출된다고 볼 수 있다. 디바운스의 대기 중에 이벤트가 계속 발생한다면 그 이벤트의 처리가 계속 미루어지다가 이뤄지기 때문이다. (setTimeout을 이용한 방식으로 이전의 타이머를 정리하고, 다음 타이머를 설정하는 것을 떠올리면 된다.)

이벤트 처리로 렌더링이 갱신되야 하는 등 조금 더 잦은 이벤트의 처리가 필요하다면 쓰로틀을 사용하도록 하자

Written on July 7, 2022