파이썬 timeit()으로 실행 시간 측정하기: 실용 예제
파이썬 timeit()으로 실행 시간 측정하기: 실용 예제
파이썬 timeit()이란?
파이썬 timeit()은 작은 코드 조각의 실행 시간을 높은 정밀도로 측정하기 위해 설계된 내장 모듈입니다. 기본적으로 문을 100만 번 실행하고 가장 빠른 실행 시간을 보고하므로, 다양한 구현의 성능을 비교하는 데 도움이 됩니다.
문법
timeit.timeit(stmt, setup, timer, number)
매개변수
- stmt – 측정할 코드. 기본값
pass.
- setup –
stmt 전에 한 번 실행할 코드. 기본값 pass.
- timer – 선택적 타이머 함수. 모듈이 적절한 기본값 제공.
- number –
stmt 실행 횟수. 기본값 1,000,000.
모듈 임포트:
import timeit
예제 1 – 단순 표현식 측정
기본 산술 연산 테스트:
import timeit
print(timeit.timeit("output = 10*5"))
일반적인 출력: 0.06127880399999999
100만 회 실행 중 가장 빠른 시간(초 단위) 표시.
여러 줄 코드 측정
timeit은 세미콜론으로 문을 구분하거나 삼중 따옴표 문자열로 전달해 여러 줄 처리 가능.
세미콜론 사용
import timeit
print("걸린 시간:", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
출력: 걸린 시간: 0.137031482
삼중 따옴표 문자열 사용
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))
주요 메서드
- timeit.default_timer() – 최고 해상도로 현재 시간 반환.
- timeit.repeat(stmt, setup, timer, repeat, number) –
timeit()을 반복 실행해 각 실행의 최고 시간 리스트 반환.
예제 1 – timeit.timeit() 사용
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))
출력: 0.46715912400000004
예제 2 – default_timer() 사용
import timeit
import random
def test():
return random.randint(10, 100)
starttime = timeit.default_timer()
print("시작 시간:", starttime)
test()
print("시간 차이:", timeit.default_timer() - starttime)
출력: 시작 시간: 0.220261875 / 시간 차이: 0.0004737320000000045
예제 3 – timeit.repeat() 사용
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))
출력: [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
각 항목은 100만 회 실행 한 번의 최고 시간입니다.
명령줄 사용
셸에서 직접 timeit 호출 가능:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
-n N – 문장 실행 루프 횟수.
-r N – 전체 타이밍 프로세스 반복 횟수.
-s S – 타이밍 전 한 번 실행할 설정 코드.
-t – time.time()을 타이머로 사용.
-c – time.clock()을 타이머로 사용.
-h – 도움말 표시.
예제
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
REPL에서 호출도 편리:
import timeit
print("걸린 시간:", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
출력: 걸린 시간: 0.15048536300000137
timeit()이 파이썬 코드 타이밍에 최적인 이유
- 문을 여러 번 실행(기본 100만 회)하고 가장 빠른 실행 시간 반환으로 신뢰도 높은 추정치 제공.
- 타이밍 중 가비지 컬렉션 비활성화로 결과 왜곡 방지.
- 운영체제에 가장 정밀한 타이머 자동 선택(윈도우:
time.clock(), macOS/리눅스: time.time()).
요약
timeit 모듈은 짧은 파이썬 스니펫 벤치마킹에 필수입니다. 매개변수는 직관적:
- stmt – 측정할 코드.
- setup – 일회성 설정 코드.
- timer – 선택적 타이머 함수.
- number –
stmt 실행 횟수.
정확하고 반복 가능한 측정을 위해 timeit을 사용하세요.