어떤 기능을 구현했을 때, 퍼포먼스가 좋지 않으면 문제가 될 때가 있습니다. 또는, 기존 코드가 느려서 개선했는데 얼마나 개선이 되었는지 시간을 측정해야할 때가 있습니다.

이 글에서는 코드의 실행 시간이 얼마인지 측정하는 방법에 대해서 소개합니다.

1. perf_counter()으로 시간 측정

time.perf_counter()는 CPU 시간으로 수행 시간을 측정하여, 조금 더 정확하게 시간을 측정할 수 있습니다.

  • perf_counter()는 시간을 리턴하며, 코드 실행 전/후에 시간을 기록하고 차를 계산하여 실행 시간을 구할 수 있음

아래와 같이 어떤 코드의 실행 시간을 측정할 수 있습니다.

import time

def test_function():
    print("함수 수행 중..")
    time.sleep(1)

# 시작
start = time.perf_counter()

# 코드 실행
for i in range(3):
    result = test_function()

# 종료
end = time.perf_counter()

diff = end - start
print(f"실행 시간: {diff:.2f} 초")

Output:

함수 수행 중..
함수 수행 중..
함수 수행 중..
실행 시간: 3.00 초

2. time()으로 시간 측정

time.time() UTC time을 초단위로 리턴합니다. UTC는 1970년 1월 1일을 0초로 현재까지 흐른 시간을 계산하는 방식입니다.

위의 예제와 동일하게, time()은 호출 시점의 시간을 리턴하며, 코드 실행 전/후에 시간을 기록하고 차를 계산하면 실행 시간을 구할 수 있습니다.

import time

def test_function():
    print("함수 수행 중..")
    time.sleep(1)

# 시작
start = time.time()

# 코드 실행
for i in range(3):
    result = test_function()

# 종료
end = time.time()

diff = end - start
print(f"실행 시간: {diff:.2f} 초")

Output:

함수 수행 중..
함수 수행 중..
함수 수행 중..
실행 시간: 3.00 초

3. timeit으로 시간 측정

timeit(function, number)은 인자로 전달한 function을 number 횟수만큼 호출하고 전체 실행 시간을 초 단위로 리턴합니다.

위의 예제들과 다르게, timeit() 함수에 테스트할 함수와 반복할 횟수를 인자로 전달하고 실행 시간을 전달받으면 됩니다.

import time
import timeit

def test_function():
    print("함수 수행 중..")
    time.sleep(1)

execution_time = timeit.timeit(test_function, number=3)

print(f"실행 시간: {execution_time:.2f} 초")

Output:

함수 수행 중..
함수 수행 중..
함수 수행 중..
실행 시간: 3.00 초