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