Python Benchmark

2023. 3. 13. 09:04Language/Python

내가 짠 코드에 대해 성능 테스트를 할 때 사용 하는 방법이 Benchmark 입니다.
물론 time() 함수를 통해 함수의 시작과 끝의 시간을 비교하여 속도를 측정 할 수 있지만, 데이터를 직접 넣어 줘야하는 번거로움이 있습니다.

이때 pytest-benchmark를 사용하면 지정한 값을 반복적으로 넣어 최소시간, 최대시간, 평균 시간 등을 출력 해줍니다.

pytest-benchmark 설치

설치하는 방법은 pip를 통해 쉽게 설치가 가능합니다.

> python pip install pytest-benchmark

데모

1부터 n까지의 합을 출력하는 함수가 있습니다.

fast-sum() 함수는 분할정복으로 최적화를 시킨 함수입니다.

normally_sum() 함수는 일반적인 반복문을 통해 1부터 n까지 하나하나 더하는 함수 입니다.


# permutation.py

def fast_sum(n=10000) :
    if (n == 1) : return n
    if (n % 2 == 1) : return fast_sum(n-1) + n
    return 2 * fast_sum(n/2) + (n/2)*(n/2)

def normally_sum(n=10000) : 
    result = 0
    for i in range(1, n):
        result += i
    return result

위 두 함수의 성능을 테스트 하기 위해서는 아래와 같이 benchmark 함수를 만들어 줍니다.

def fast_sum(n=10000) :
    if (n == 1) : return n
    if (n % 2 == 1) : return fast_sum(n-1) + n
    return 2 * fast_sum(n/2) + (n/2)*(n/2)

def normally_sum(n=10000) : 
    result = 0
    for i in range(1, n):
        result += i
    return result

def test_func1(benchmark):
    benchmark(fast_sum, 10000)

def test_func2(benchmark):
    benchmark(normally_sum, 10000)
> pytest --benchmark-only permutation.py

위와 같이 pytest를 통해 benchmark를 돌립니다.

'Language > Python' 카테고리의 다른 글

VS Code에서 Python Type Check 기능 활성화  (0) 2023.04.21