PHpullh
학습 라이브러리/Python/벤치마크 (pytest-benchmark)

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 와 격리된 환경을 사용하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.