당신이 개발 하시는 프로그램에 Runtime 을 time으로 확인하세요.(Doc) – 물론 다른 방법도 많이 있습니다.
프로그래밍에서는 많은 요소가 Runtime에 영향을 미치는데 예측과 다른 경우가 있습니다.
for나 while은 예측 할 수 있지만, I/O 작업은 예측이 불가능한 경우가 많습니다. 파일 작업 또는 메모리 데이터가 처리되는 방식에 따라 Runtime이 달라집니다. 그런데 여러 알고리즘 중 하나를 선택해야 할때가 생기면 정밀한 측정이 필요합니다.
대부분의 사람들은 현재 시간을 확인하거나, 특정 시간을 표현하는 데 사용합니다. 그러나 저는 Runtime 을 확인하기 위해 가장 처음 하는 기본 코드 입니다.
제품을 개발할때 반드시 포함해야 할 핵심 기능 이라 생각합니다. 테스트 시점에 Runtime을 확인 하면 의외의 문제점을 찾을 수 있습니다. 물론 Unit test는 가장 기본입니다.
Runtime Code
import time
if __name__ == "__main__":
start_time = time.time()
# Main Program Code (Your Code or Function)
time.sleep(1)
# runtime print
print(f"""Run Time {(time.time() - start_time)} seconds""")
print("Run Time %s seconds" % (time.time() - start_time))
# or decimal point control
print(f"""Run Time {round((time.time() - start_time),2)} seconds""")
print("Run Time %.2f seconds" % (time.time() - start_time))
print("Run Time {:.2f} seconds".format(time.time() - start_time))
그리고 생각해보니 time.time()은 UTC 시간으로 1970년 1월 1일 00:00:00부터 현재까지 계산된 시간입니다. 그런데 왜 1970년이 기준 연도인지는 모르겠네요.
또한 어떤 사람들은 “time.time()”이 중복처럼 보여서 다른 방식으로 사용합니다. “from time import time”과 같이 미리 선언하여 “time()”만 사용하기도 합니다. 하지만 저는 원본을 사용하는 것을 선호합니다.
이유로는 time과 같이 짧은 명사 형태의 함수는 제가 선언해서 사용하게 되는 경우가 있어 구분이되는 것을 선호합니다.
물론 보기 좋지 않아서 오픈소스 화 할 때 변경합니다.
Stdout Output
Run Time 1.0002810955047607 seconds
Run Time 1.000603199005127 seconds
Run Time 1.0 seconds
Run Time 1.00 seconds
Run Time 1.00 second
1초의 sleep이 실제로는 Runtime 1초가 아닌 이유는 무엇일까요? CPU나 메모리가 명령을 수신하는 데 걸리는 시간도 있기 때문입니다.
이 짧은 시간은 PC의 성능과 현재 사용 중인 프로그램이 얼마나 바쁜지에 아주 미세하게 따라 달라질 수 있습니다. 그래도 이정도면 신뢰성이 높은 편이라 생각하는데 어떻게 생각하세요?