프로그램 전체 또는 특정 함수의 실행 시간을 측정해야 하는 경우가 자주 있습니다. 파이썬에서는 time 모듈의 time.clock() 또는 time.time() 함수를 사용하여 이를 간단하게 구현할 수 있습니다. 공식 파이썬 문서에서는 벤치마킹(성능 측정) 목적으로는 time.clock() 사용을 권장하고 있으며, 측정하고자 하는 함수 호출 앞뒤에 이 함수들을 배치하면 해당 함수에 소요된 시간을 확인할 수 있습니다.
time 모듈로 실행 시간 측정하기
다음은 함수 실행 시간을 측정하는 기본적인 예제입니다.
import time
t0 = time.clock()
print("Hello")
t1 = time.clock() - t0
print("Time elapsed: ", t1 - t0) # 경과된 CPU 시간(부동 소수점)
실행 결과
Time elapsed: 0.0009403145040156798
참고: time.clock() 함수는 Python 3.3부터 지원 중단(deprecated)되었으며, Python 3.8에서 완전히 제거되었습니다. 최신 버전의 파이썬을 사용한다면 더 정밀한 측정이 가능한 time.perf_counter()를 대신 사용하는 것이 좋습니다.
import time
t0 = time.perf_counter()
print("Hello")
t1 = time.perf_counter() - t0
print("Time elapsed: ", t1)
timeit 모듈로 정확한 통계 분석하기
더 신뢰할 수 있는 성능 분석이 필요하다면 timeit 모듈을 사용하는 것이 좋습니다. 단순히 한 번만 측정하면 시스템 부하 등 외부 요인에 따라 결과가 크게 달라질 수 있기 때문입니다. timeit은 코드 조각을 여러 번 반복 실행한 후, 가장 짧게 걸린 실행 시간을 반환하여 보다 안정적인 통계 분석을 제공합니다.
사용 방법은 다음과 같습니다.
def f(x):
return x * x
import timeit
timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=100000)
실행 결과
[2.0640320777893066, 2.0876040458679199, 2.0520210266113281]
timeit.repeat()는 기본적으로 3번의 반복(repeat)을 수행하며, 각 반복마다 지정된 횟수(number=100000)만큼 코드를 실행한 후 소요 시간을 리스트 형태로 반환합니다. 반환된 값들 중 최솟값이 가장 왜곡이 적은 순수 실행 시간에 가깝기 때문에, 일반적으로 이 값을 기준으로 성능을 비교하는 것이 좋습니다.
정리
- 간단한 시간 측정에는
time.perf_counter()(구버전은time.clock())를 함수 호출 앞뒤에 배치하여 사용합니다. - 정확한 벤치마킹이 필요하다면
timeit모듈로 여러 번 반복 실행 후 최소 시간을 확인합니다. - 측정 환경에 따라 결과가 달라질 수 있으므로, 동일한 조건에서 여러 번 측정하여 비교하는 것이 중요합니다.