IT/면접

Q. 쓰로틀링과 디바운싱의 개념과 사용하는 이유에 대해서 설명

뀨뿌뀨뿌 2023. 8. 31. 06:37

쓰로틀링(Throttling)과 디바운싱(Debouncing)은 주로 사용자 인터페이스에서 발생하는 이벤트에 대해 불필요한 연산을 줄이기 위한 기술로 사용

❓쓰로틀링(Throttling)

- 개념: 특정 함수가 일정 시간 동안 N번 이상 실행되지 않도록 제한하는 기술임
- ex) 사용자가 스크롤을 할 때마다 이벤트 핸드러가 실행되는 것을 막기 위해, 일정 시간 동안 한 번만 이벤트 핸들러가 실행되도록 제한하는 것을 의미함
- 사용하는 이유
    빠른 연속적인 이벤트(ex. 스크롤, 윈도우 리사이징)에서 과도한 연산을 줄이기 위함
    서버 API 호출의 빈도를 줄이기 위해 사용하기도 함. 이를 통해 서버의 부하를 감소시킬 수 있음

❓디바운싱(Debouncing)

- 개념; 연속된 이벤트가 발생할 경우, 마지막 이벤트로부터 일정 시간이 경과한 후에만 함수를 실행하는 기술
- ex) 사용자가 검색어를 입력하는 도중에 서버로 검색 요청을 보내는 것이 아니라, 사용자가 검색어 입력을 완료하고 일정 시간동안 추가 입력이 없을 때 한 번만 서버로 검색 요청을 보내는 것을 의미함
- 사용하는 이유
   연속적인 이벤트 발생 시 불필요한 함수 실행 또는 서버 요청을 최소화하기 위함
   사용자의 실질적인 마지막 동작에만 반응하고자 할 때 유용함

쓰로틀링과 디바운싱은 주로 사용자 인터페이스의 이벤트 처리와 관련하여 불필요한 연산을 줄이기 위해 사용하는 기술입니다.쓰로틀링은 특정 함수가 일정 시간 동안 N번 이상 실행되지 않게 제한하는 방법입니다. 예를 들면, 사용자가 스크롤을 할 때, 그 스크롤 이벤트 핸들러를 일정한 주기로만 실행하게 하는 것입니다. 이는 과도한 연산을 방지하고, 때로는 서버의 API 호출 빈도도 줄여 서버 부하를 감소시키는 데 효과적입니다.반면, 디바운싱은 연속된 이벤트가 발생할 때 마지막 이벤트 이후 일정 시간이 경과한 후에만 함수를 실행하게 하는 방법입니다. 예를 들면, 사용자가 검색어를 입력할 때 실시간으로 서버에 검색 요청을 보내는 대신, 사용자가 입력을 멈춘 후 일정 시간동안 추가 입력이 없을 때만 서버로 검색 요청을 보냅니다. 이는 불필요한 함수 호출이나 서버 요청을 최소화하며, 사용자의 최종적인 의도에 더 정확하게 반응하게 해줍니다.요약하면, 쓰로틀링은 이벤트 처리를 일정한 시간 간격으로 제한하는 반면, 디바운싱은 마지막 이벤트가 발생한 후 일정 시간을 기다린 후 이벤트를 처리합니다. 두 기술 모두 성능 최적화와 사용자 경험 향상을 목적으로 사용됩니다.