Python에서 코드 실행 시간을 고정밀하게 측정하려면 time.clock() 또는 time.time() 함수를 사용할 수 있습니다. 공식 문서에서도 벤치마킹 목적으로는 이 함수들을 사용할 것을 권장하고 있습니다.
예제
import time
t0 = time.clock()
print("Hello")
t1 = time.clock()
print("Time elapsed:", t1 - t0) # 경과된 CPU 시간(부동 소수점)
출력 결과
Time elapsed: 0.0009403145040156798
측정 정확도와 플랫폼별 차이
시스템의 내부 클록 설정(초당 틱 수)에 따라 측정 정확도는 달라질 수 있지만, 일반적으로 오차는 20ms 미만입니다.
또한 clock()은 플랫폼마다 서로 다른 값을 반환한다는 점에 유의해야 합니다.
- Unix 계열: 현재 프로세서(CPU) 시간을 초 단위의 부동 소수점 숫자로 반환합니다. 정밀도와 '프로세서 시간'의 정확한 의미는 동일한 이름의 C 함수에 의존하지만, 어느 경우든 Python 벤치마킹이나 알고리즘 실행 시간을 측정하는 데 적합한 함수입니다.
- Windows: Win32 API의
QueryPerformanceCounter()를 기반으로, 이 함수가 처음 호출된 이후 경과한 실제 시간(wall-clock seconds)을 부동 소수점 숫자로 반환합니다. 해상도는 일반적으로 1마이크로초보다 뛰어납니다.
참고: 최신 Python에서의 대안
time.clock()은 Python 3.3부터 지원 중단(deprecated)되었으며, Python 3.8에서 완전히 제거되었습니다. 따라서 최신 버전의 Python에서는 다음 함수를 사용하는 것이 좋습니다.
time.perf_counter(): 시스템 전체 기준의 고해상도 성능 카운터로, 두 호출 사이의 경과 시간을 측정하는 벤치마킹용 표준 방법입니다.time.process_time(): 현재 프로세스의 CPU 시간만 측정하며, sleep 시간은 제외됩니다.
import time
t0 = time.perf_counter()
# 측정할 코드 작성
t1 = time.perf_counter()
print("Elapsed:", t1 - t0)
이처럼 환경에 맞는 함수를 선택하면 플랫폼에 관계없이 안정적이고 고정밀한 시간 측정이 가능합니다.