[python] 캐시와 메모이제이션의 활용과 효율성

최적화된 애플리케이션을 작성할 때, 캐시메모이제이션은 매우 유용한 기술입니다. 이 기술들은 반복적으로 사용되는 계산 또는 데이터를 저장하고, 다시 사용함으로써 성능을 향상시킵니다. 이번 포스트에서는 파이썬에서 캐시와 메모이제이션을 어떻게 활용하는지 알아보고, 이를 통해 코드의 효율성을 개선하는 방법에 대해 알아보겠습니다.

캐시와 메모이제이션 - 뭔가 다른 거야?

캐시메모이제이션은 비슷한 목적을 가지고 있지만, 약간의 차이가 있습니다.

캐시와 메모이제이션의 활용

파이썬에서 캐시와 메모이제이션을 어떻게 활용할 수 있을까요? 다음은 캐시와 메모이제이션의 사용 예시입니다.

캐시 활용하기

import functools

@functools.lru_cache(maxsize=128)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

print(fib(10))  # 이미 계산된 결과를 캐시에서 가져와 사용

메모이제이션 활용하기

def memoize(func):
    cache = {}

    def wrapper(*args):
        if args not in cache:
            cache[args] = func(*args)
        return cache[args]

    return wrapper

@memoize
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

print(fib(10))  # 이미 계산된 결과를 메모이제이션하여 사용

효율성 개선의 결과

위의 예제들은 재귀적으로 피보나치 수를 계산하는 함수입니다. 이러한 함수는 중복 계산이 많이 발생하여 성능이 저하될 수 있습니다. 하지만, 캐시와 메모이제이션을 적용함으로써 함수의 성능을 크게 향상시킬 수 있습니다.

마무리

캐시와 메모이제이션은 파이썬에서 성능을 향상시키는 데 중요한 역할을 합니다. 이를 적절히 활용하여 반복 계산을 최소화하고, 성능을 개선할 수 있습니다. 앞으로 적절한 상황에서 이러한 기술들을 적용하여 보다 효율적이고 빠른 파이썬 애플리케이션을 만들어보시기 바랍니다.

파이썬 공식 문서 - functools 모듈