Joonas' Note
Joonas' Note
[Python] 함수의 실행 속도 측정하기 본문
함수의 실행 속도를 측정하는 코드이다. 다음과 같이 함수들을 미리 선언해둔다.
import time
def measure(func):
"""
Returns milliseconds how much time takes to run given func
"""
start = time.time()
func()
end = time.time()
diff = end - start
return diff * 1000
def bench(func, k: int = 1, params: list = [{}], title: str = ''):
pcnt = len(params)
pstr = f" x {pcnt} params" if pcnt > 1 else ''
print(f"[run x {k}{pstr}] {title}")
t = []
for _ in range(k):
for param in params:
elapsed = measure(lambda: func(**param))
t.append(elapsed)
average = sum(t) / len(t)
del t
print(f'>>> (avg.) {average:.5f} ms')
이제 함수를 실행하고 시간을 측정하는 방법은 아래와 같다.
# 측정하려는 함수
def fun1():
arr = []
for _ in range(100000):
arr.append(_)
del arr
# 측정 시작
bench(
func=fun1, # 측정하려는 함수
k=1000, # 1000번 실행해서 평균으로 계산
title='list.append() for 100k times' # 출력할 제목
)
"""
실행 결과:
[run x 1000] list.append() for 100k times
>>> (avg.) 6.47000 ms
"""
함수에 파라미터를 넘기고 싶다면 다음과 같다.
def func2(n: int):
for _ in range(2 ** n):
pass
# 실행
bench(
func=func2,
k=100,
params=[{'n': 1}, {'n': 10}, {'n': 16}, {'n': 20}],
title='passing parameters'
)
"""
실행 결과:
[run x 100 x 4 params] passing parameters
>>> (avg.) 4.09005 ms
"""
'개발 > python' 카테고리의 다른 글
한국 노래 가사(1964~2023년) 데이터 분석해보기 (0) | 2024.01.26 |
---|---|
[파이썬 패키지] 설치 없이 가벼운 데이터베이스 (json-as-db; JAD) (0) | 2023.01.27 |
VSCode에서 Python 버전 변경하기 (0) | 2023.01.11 |
아나콘다(Anaconda) 없이 가상환경 세팅하기 (0) | 2023.01.07 |
설치된 python의 지원 가능한 platform 확인 (0) | 2022.12.01 |
Comments