소개

개발을 하다보면 누구나 꽂히는 개념이 하나씩 있을 것 같아요. 저는 메모이제이션이라는 주제에 대해 꽂혀있는 편입니다. 우선, 메모이제이션이라는 것을 처음알았을 때를 생각해보면 함수에게 기억력을 심어줄 수 있다는 개념 자체가 흥미로웠어요.

회사에 입사하고 나서, 라이브러리를 최대한 지양하는 방향의 회사이다 보니 API 콜에 대한 메모이제이션을 직접 구현하는 것이 아니라면*(reactQuery 와 같이)*이를 이용할 수 있는 방법이 없었어요. 또한 리액트에서 흔하게 사용하는 useMemo나 useCallback도 이 memoization의 개념에서 나오기도 하구요. 이러한 계기로 다시 메모이제이션에 대해 공부하고 만들어볼 수 있는 기회를 가지면 좋겠다고 생각했습니다.

메모이제이션은 캐싱이라고 부르기도 하는데, 캐싱이라는 개념자체가 프로그래밍에서는 흔하게 사용하는 개념이면서도 코드레벨에서 어떻게 작동하는지 무시하고 넘어갈 때가 많다고 생각해요. 이번 주는 클로저를 사용한 메모이제이션에 대해 복습해보려고 합니다.

이 아티클은 아래의 영상을 보고 제작하였습니다. 번역에 가까운 글입니다.

https://www.youtube.com/watch?v=KwXWI8pm0Vk&t=686s


Memoization 이란?

메모이제이션은 연산을 줄임으로서 성능을 높이는 방법입니다.

메모이제이션에는 두가지 종류가 있습니다.

  1. Implicit Caching 암묵적 캐싱

    직접 함수 내에 암묵적인 캐싱로직을 심는 것입니다.

  2. Decorator Functions 데코레이터 함수

    고차함수를 이용한 방식으로, 함수를 반환하도록 하여 캐싱을 하는 방법입니다.