Python에서 시간 측정: time.clock() vs time.time()
Python에서 코드 실행 시간을 측정하거나 벤치마킹을 해야 하는 상황이라면, time.time()보다 time.clock()을 사용하는 것이 더 적합합니다.
time.time()은 모든 플랫폼에서 UTC 기준 에포크(epoch, 1970년 1월 1일) 이후 경과된 초를 부동 소수점 숫자로 반환합니다. 즉, 현재 시각을 나타내는 데는 유용하지만 정밀한 성능 측정용으로 설계된 것은 아닙니다.
운영체제별로 다른 time.clock()의 동작
반면 time.clock()은 운영체제에 따라 동작 방식이 다릅니다.
- Unix/Linux: 현재 프로세스가 사용한 CPU 시간을 측정합니다. 따라서 과거의 특정 시점부터 지금까지의 실제 경과 시간(wall-clock time)을 재는 용도로는 적합하지 않습니다.
- Windows: 해당 함수가 처음 호출된 이후 경과된 실제 시간(초)을 측정합니다.
시스템 시간 변경에 대한 안정성
두 함수의 또 다른 중요한 차이점은 시스템 시간 변경에 대한 반응입니다. 시스템 시계를 조정하면 time.time()의 반환값에는 영향을 미치지만, time.clock()의 값은 영향을 받지 않습니다. 이러한 이유로 정밀한 성능 측정에는 time.clock()이 더 안정적인 선택이 됩니다.
벤치마킹이라면 timeit 모듈을 사용하세요
특정 코드 블록의 실행 시간을 벤치마킹이나 프로파일링 목적으로 측정하려면, 위 두 함수 대신 timeit 모듈을 사용하는 것이 가장 좋습니다. timeit은 코드를 여러 번 반복 실행하여 가비지 컬렉션 등 외부 요인의 간섭을 최소화하고, 훨씬 정확하고 신뢰할 수 있는 결과를 제공합니다.
참고: Python 3.x 사용자라면
time.clock()은 Python 3.3에서 폐기(deprecated)되었으며, Python 3.8에서 완전히 제거되었습니다. 최신 Python 버전에서는 용도에 맞게 아래 함수를 사용하는 것이 권장됩니다.
time.perf_counter(): 짧은 구간의 경과 시간을 고해상도로 측정할 때 적합time.process_time(): 현재 프로세스가 사용한 CPU 시간을 측정할 때 적합