import time

start = time.time()

''' do something '''

end = time.time()

print(end - start)

알고리즘 공부나 파이썬 코딩 테스트들의 교재를 공부하다보면 위와 같은 코드가 종종 보인다.

time 모듈을 사용하여 자신의 코드가 얼마나 걸리는지 확인해 보라는 의미이다.

코딩 테스트가 아니더라도 시간복잡도 측면에서 내 코드가 얼마나 걸리는지는 중요한 안건이다.

그렇기에 시간이 얼마나 걸리는지 확인하는 시도는 매우 훌륭하다.

 

하지만 위와 같은 방식은 조금 잘못됐다.

time.time()은 말그대로 지금 시각을 입력받는 것이지 코드가 얼마나 걸리는지가 아니다.

아주 사소한 차이지만 다르다.

 

import time

# Using perf_counter()
start = time.perf_counter()
''' do something '''
end = time.perf_counter()
print(end - start)

# Using prcess_time()
start = time.process_time()
''' do something '''
end = time.process_time()
print(end - start)

time()보다는 perf_counter()나 process_time()이 더 정확하다.

perf_counter()의 경우 프로그램 전체의 실행시간으로 계산한다.
process_time()의 경우 프로그램이 실제 프로세싱(처리)된 시간으로 계산한다.

 

어떤 차이냐면 sleep(sometimes)을 생각하면 된다.

perf_counter()는 프로그램 실행시간을 계산하기 때문에 sleep()으로 쉰 시간도 포함한다.

하지만 process_time()은 실제 프로세싱 시간을 계산하기 때문에 포함하지 않는다.

자신의 코드 상태를 보고 적절히 골라서 사용하면 된다.

모르겠다 싶으면 perf_counter()로 계산하자.

 

 

고민을 시작한 영상 출처 : mCoding's Youtube 5:22, https://www.youtube.com/watch?v=qUeud6DvOWI

'Computer Science > 파이썬(Python)' 카테고리의 다른 글

Python f string format  (0) 2023.04.01
Python zip  (0) 2023.03.30
Python if comprehension  (0) 2023.03.28
Python enumerate  (0) 2023.03.28
Python pass vs continue  (0) 2023.03.27

+ Recent posts