Python Benchmark
2023. 3. 13. 09:04ㆍLanguage/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 |
---|