1. 개요
- 파이썬 알고리즘이나 프로그램의 수행시간을 측정, 비교하기 위해 쓰이는 파이썬 모듈을 소개해보겠습니다.
- 다만, 프로그램 구동환경에 따라 CPU, RAM, BUS 성능이 제각각이므로 모든 구동환경에 대한 '절대적' 측정 시간이 아닌, 특정 구동환경에 대한 '상대적' 수행시간임을 참고하시면 되겠습니다.
- 파이썬 프로그램 시간측정에 쓰이는 'time'이라는 모듈 중 time.perf_counter()와 time.process_time() 이 두 가지 메서드에 대해 알아보겠습니다.
2. time.perf_counter()
- time.perf_counter() 메서드는 파이썬 프로그램 실행 시작시간부터, 프로그램 종료까지의 시간을 측정하는데, 모든 대기 시간, 입/출력대기, 사용자와의 상호작용 대기시간 등이 포함됩니다.
- 'time' 모듈을 import하는 선행작업이 필요합니다.
- 스탑워치로 시간을 재듯, 시작 시점과 종료시점 두 가지에 대한 기록이 필요하고, 종료시간과 시작시간의 차이를 계산하여 프로그램의 총 구동시간을 측정합니다.
import time
# 성능 카운터 시작
start = time.perf_counter()
# 시간을 측정하고 싶은 작업 수행
# 예: 1초 대기
time.sleep(1)
# 성능 카운터 종료 및 출력
end = time.perf_counter()
print(f"Operation took {end - start} seconds")
3. time.process_time()
- time.process_time() 메서드는 'CPU시간'을 측정하는데, CPU시간이란 입출력작업이나 대기 시간을 제외한 단순 CPU 이용시간만을 의미합니다.
- 마찬가지로 'time' 모듈을 import하는 선행작업이 필요합니다.
- 시작 시점과 종료시점 두 가지에 대한 기록이 필요하고, 종료시간과 시작시간의 차이를 계산하여 프로그램의 총 구동시간을 측정합니다.
import time
# CPU 시간 측정 시작
start = time.process_time()
# CPU 시간을 소모하는 작업, 예를 들어 계산 작업 수행
num = 0
for _ in range(1000000):
num += 0
# CPU 시간 측정 종료
end = time.process_time()
# 소요된 CPU 시간 출력
print(f"Process took {end - start} seconds")