Computer/Coding Tests

[코딩 테스트]시간 재는 모듈 time v.s. timeit 차이

이르리의 공부일지 2025. 3. 21. 16:13

알고리즘 테스트 시간을 잴 때 time을 이용했는데 timeit이라는 모듈을 알게 됐다.

둘 다 실행 시간을 재는 목적이긴 한데, 정확도와 사용 목적이 다르다한다.

 

time vs timeit 비교시작!


⏱️ 1. time 모듈

장점

  • 간단하게 한 번만 실행해서 시간 측정 가능
  • 디버깅할 때 빠르게 쓸 수 있음
  • 사람이 직접 코드 블록을 지정해서 원하는 부분만 측정 가능

단점

  • 짧은 코드일수록 정확하지 않음 (ms 단위 이하는 부정확)
  • 백그라운드 잡음(예: OS task scheduler)에 영향 많이 받음
  • 반복 실행 없이 단발성이라 변동성 큼

 

⏱️ 2. timeit 모듈

장점

  • 여러 번 반복해서 평균 시간 측정 (기본 100만 번)
  • 실행 환경 노이즈를 줄여서 훨씬 정밀
  • 알고리즘 미세 성능 비교에 적합 (예: A 방식 vs B 방식)

단점

  • 코드 분리해서 stmt, setup으로 넣는 게 약간 번거로움
  • 입출력 포함된 코드에는 잘 안 맞음 (stdin, print 등)

 

🎯 정리표

# time 모듈
import time 
start = time.time() 
# 실행할 코드 
end = time.time() 
print(f"실행 시간: {end - start:.6f}초")

# timeit 모듈
import timeit 
print(timeit.timeit(stmt="code()", setup="from __main__ import code", number=100000))
항목 time timeit
정확도 낮음 (ms 이상만 적절) 높음 (μs 단위까지 정밀)
반복 실행 ❌ 기본 없음 ✅ 내부적으로 수천~백만 회 반복
사용 편의성 ✅ 매우 간단 ❌ 조금 번거롭지만 유연함
측정 목적 대략적인 측정, 디버깅 정밀 측정, 알고리즘 비교
입출력 포함 코드 ✅ 적합 ❌ 부적합

그럼 어떤 걸 언제 쓰냐?

입출력 포함해서 간단히 알아보자 => time 모듈

자세히 알고 싶다, 입출력 부분 빼고 주요 로직만 따로 빼서 알아보자 => timeit