기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 1편

모바일 청첩장 시리즈 1편 · 기획/스택/배포 리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 1편 안녕하세요, 이번에 결혼 준비를 하면서 여자친구와 같이 모바일 청첩장 을 만들고 있어요. 여자친구가 디자인을 해서 전달해주면 제가 개발을 진행하고 있어요. 이 글은 구현기 1편 으로, 전체 흐름과 스택, 배포 구성까지 “부담 없이” 훑어봅니다. (코드는 여러 버전 테스트 중!) 이 글에서 보는 것 왜 SPA 모바일 청첩장인가? 기본 스택 & 폴더 구조 라우팅 선택: HashRouter가 편한 이유 Cloudflare Pages로 자동 배포 현재 진행 중인 UI 버전들(테스트 기록) 1) 왜 SPA 모바일 청첩장인가? 모바일 청첩장은 핵심이 명확해요. 가볍고 빠르고 끊김이 없어야 하고, 사진/지도/일정이 터치에 친화적 이어야 합니다. 그래서 React + Vite 로 싱글 페이지 앱(SPA)을 구성했고, 정적 호스팅(CDN)인 Cloudflare Pages 에 올려 GitHub 푸시 → 자동 배포 까지 한 번에 묶었습니다. UX 팁 · 이미지 WebP, loading="lazy" 기본 · 큰 터치 타깃 · BGM은 “사용자 탭 후” 재생(모바일 정책) 2) 기본 스택 & 폴더 구조 서버는 따로 두지 않았고, 정적 빌드 결과물( dist/ )만 올립니다. 현재 의존성은 아래와 같아요. package.json(요약) { "name": ...

🚀 파이썬 lru_cache로 함수 성능 최적화하기

파이썬 lru_cache로 함수 성능 최적화하기

🚀 파이썬 lru_cache로 함수 성능 최적화하기

요약:
functools.lru_cache는 함수 결과를 캐싱하여 반복 계산을 피할 수 있게 해주는 데코레이터입니다. 재귀 함수나 반복 호출되는 함수에 사용하면 성능이 비약적으로 향상됩니다.

🔍 lru_cache란?

functools 모듈의 lru_cache는 가장 최근에 사용된 결과를 저장해두었다가, 같은 입력이 들어오면 다시 계산하지 않고 저장된 결과를 반환하는 기능입니다. 특히 재귀 호출이 많은 함수에서 유용하게 사용됩니다.

🧭 lru_cache 작동 구조

🧪 예제: 피보나치 함수 최적화

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(35))

위의 예제에서 fibonacci(35)를 호출하면 중복 계산 없이 빠르게 결과를 얻을 수 있습니다.

📈 성능 비교

import time

def slow_fib(n):
    if n < 2:
        return n
    return slow_fib(n-1) + slow_fib(n-2)

start = time.time()
slow_fib(35)
print("일반 함수 실행 시간:", time.time() - start)

start = time.time()
fibonacci(35)
print("캐시 함수 실행 시간:", time.time() - start)

⚠️ 주의할 점

  • lru_cache는 인자가 해시 가능한(immutable) 객체여야 합니다.
  • mutable 타입 (ex. 리스트, 딕셔너리)은 사용 불가입니다.
  • maxsize를 설정하여 캐시 저장 크기를 조절할 수 있습니다.

💡 실전 팁

  • API 응답 캐싱에 활용
  • 복잡한 계산을 여러 번 수행할 때
  • 데이터 분석에서 반복 쿼리 방지

🔗 관련 포스트

댓글

가장 많이 본 글

Icons by Flaticon