파이썬, 코드 또는 함수 실행 시간 자동 측정 (timeit 이용)
글 수알치 오상문
파이썬 기본 모듈 timeit의 timeit()을 이용하면 함수/코드 수행 시간을 자동 측정할 수 있다.
timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000, repeat=5, globals=None)
아래처럼 다양한 전달인수가 있지만 기본 옵션으로 사용해도 되니 신경쓰지 않아도 됩니다.
다만 첫 전달인수(stmt)는 잘 지정해야 하는데 아래 예제를 보면서 활용하기 바랍니다.
기본은 테스트를 100만번 반복하며, 그 100만번 수행을 다시 다섯 번 반복한 평균 시간을 알려줍니다.
100만번, 다섯번 같은 옵션은 아래 전달인수 옵션을 이용하여 변경하면 됩니다.
[표] timeit 함수 전달인수
----------------------------------------------------------------------------------------
stmt : 실행측정할 코드 및 함수
setup : 사전에 필요한 코드나 함수 선언 (측정 시간 계산에서 제외)
timer : Timer 인스턴스
number : 반복 수행 횟수 (기본값 1000000)
repeat : 테스트 전체를 다시 몇 번 반복할지 (기본값 5)
globals : globals()를 globals에 전달해, 현재 전역 이름 공간에서 실행되게 할 수 있다.
임포트를 개별 지정하는 것보다 편리하다.
-------------------------------------------------------------------------------------------
[ 예제: timeit_test.py ]
import timeit
def test():
"""Stupid test function"""
L = []
for i in range(100):
L.append(i)
# test 함수를 100만번 호출 수행에 걸린 시간 1
print('백만번 수행 평균 시간(1):', timeit.timeit(test), '초')
# test 함수를 100만번 호출 수행에 걸린 시간 2
t1 = timeit.timeit(test) # 기본 number=1000000, repeat=5
print('백만번 수행 평균 시간(2):', t1, '초')
# test 코드 100만번 호출 수행에 걸린 시간 3
test_code = '''
L = []
for i in range(100): L.append(i);
'''
t1 = timeit.timeit(test_code) # 기본 number=1000000
print('백만번 수행 평균 시간(3):', t1, '초')
# test 함수를 100만번 호출 수행에 걸린 시간 4
if __name__ == '__main__':
import timeit
print('백만번 수행 평균 시간(4):',
timeit.timeit("test()", setup="from __main__ import test"), '초')
[ 실행 결과 : 시간은 환경마다 다를 수 있음 ]
백만번 수행 평균 시간(1): 13.0009102 초
백만번 수행 평균 시간(2): 13.2333294 초
백만번 수행 평균 시간(3): 12.842120199999997 초
백만번 수행 평균 시간(4): 13.160649600000006 초
'Python 기초' 카테고리의 다른 글
파이썬, 정렬 sort(), sorted() 예제 (0) | 2022.05.04 |
---|---|
파이썬, 문자열(한영 포함) 바이트 길이 계산 (0) | 2022.02.07 |
파이썬, C 언어 printf() 함수 흉내내기 (0) | 2022.01.27 |
파이썬, atexit 종료 처리기 (0) | 2022.01.24 |
파이썬, date, time, timestamp 표현 (0) | 2022.01.17 |