PYTHON · 테스트
벤치마크 (pytest-benchmark)
코드의 성능을 체계적으로 측정하고 회귀를 감지하는 벤치마크 테스트입니다.
테스트고급benchmark벤치마크성능pytest-benchmark
핵심 설명
코드의 성능을 체계적으로 측정하고 회귀를 감지하는 벤치마크 테스트입니다.
Python code
import time
from functools import lru_cache
# 벤치마크 대상 함수들
def fib_recursive(n):
if n < 2:
return n
return fib_recursive(n-1) + fib_recursive(n-2)
@lru_cache(maxsize=None)
def fib_cached(n):
if n < 2:
return n
return fib_cached(n-1) + fib_cached(n-2)
def fib_iterative(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
# 간단한 벤치마크 러너
def benchmark(func, *args, iterations=1000):
start = time.perf_counter()
for _ in range(iterations):
result = func(*args)
elapsed = time.perf_counter() - start
avg = elapsed / iterations * 1_000_000 # 마이크로초
print(f" {func.__name__:20s}: {avg:>8.2f} μs/호출 "
f"({iterations}회, 총 {elapsed:.3f}초)")
return result
n = 20
print(f"=== 피보나치({n}) 벤치마크 ===")
benchmark(fib_recursive, n, iterations=100)
fib_cached.cache_clear()
benchmark(fib_cached, n, iterations=10000)
benchmark(fib_iterative, n, iterations=10000)
# pytest-benchmark 사용법:
# def test_fib(benchmark):
# result = benchmark(fib_iterative, 20)
# assert result == 6765
# 실행: pytest --benchmark-only
print("\npytest 명령: pytest --benchmark-compare")학습 팁
pytest-benchmark는 통계적 분석(평균, 중간값, 표준편차)과 이전 결과와의 비교를 자동으로 제공합니다.
주의할 점
벤치마크 중 다른 프로세스가 CPU를 사용하면 결과가 불안정합니다. --benchmark-disable-gc와 격리된 환경을 사용하세요.
자주 묻는 질문
벤치마크 (pytest-benchmark)란 무엇인가요?
코드의 성능을 체계적으로 측정하고 회귀를 감지하는 벤치마크 테스트입니다.
벤치마크 (pytest-benchmark) 학습 시 주의할 점은 무엇인가요?
벤치마크 중 다른 프로세스가 CPU를 사용하면 결과가 불안정합니다. --benchmark-disable-gc 와 격리된 환경을 사용하세요.