반응형

파이썬, 코드 또는 함수 실행 시간 자동 측정 (timeit 이용)

 

글 수알치 오상문 


파이썬 기본 모듈 timeit의 timeit()을 이용하면 함수/코드 수행 시간을 자동 측정할 수 있다.


timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000, repeat=5, globals=None)

 

아래처럼 다양한 전달인수가 있지만 기본 옵션으로 사용해도 되니 신경쓰지 않아도 됩니다.

다만 첫 전달인수(stmt)는 잘 지정해야 하는데 아래 예제를 보면서 활용하기 바랍니다.

 

기본은 테스트를 100만번 반복하며, 그 100만번 수행을 다시 다섯 번 반복한 평균 시간을 알려줍니다.

100만번, 다섯번 같은 옵션은 아래 전달인수 옵션을 이용하여 변경하면 됩니다.

 

[표] timeit 함수 전달인수

----------------------------------------------------------------------------------------
stmt     : 실행측정할 코드 및 함수
setup    : 사전에 필요한 코드나 함수 선언 (측정 시간 계산에서 제외)

timer     : Timer 인스턴스 
number : 반복 수행 횟수 (기본값 1000000)

repeat   : 테스트 전체를 다시 몇 번 반복할지 (기본값 5)

globals  : globals() globals에 전달해, 현재 전역 이름 공간에서 실행되게 할 수 있다.

             임포트를 개별 지정하는 것보다 편리하다.

-------------------------------------------------------------------------------------------

 

[ 예제: timeit_test.py ]

import timeit

def test():    
    """Stupid test function"""
    L = []
    for i in range(100):
        L.append(i)    


# test 함수를 100만번 호출 수행에 걸린 시간 1
print('백만번 수행 평균 시간(1):', timeit.timeit(test), '초') 


# test 함수를 100만번 호출 수행에 걸린 시간 2
t1 = timeit.timeit(test)  # 기본 number=1000000, repeat=5
print('백만번 수행 평균 시간(2):', t1, '초') 


# test 코드 100만번 호출 수행에 걸린 시간 3
test_code = '''
L = []
for i in range(100): L.append(i);
'''

t1 = timeit.timeit(test_code)  # 기본 number=1000000
print('백만번 수행 평균 시간(3):', t1, '초')


# test 함수를 100만번 호출 수행에 걸린 시간 4
if __name__ == '__main__':
    import timeit
    print('백만번 수행 평균 시간(4):',
          timeit.timeit("test()", setup="from __main__ import test"), '초')

[ 실행 결과 : 시간은 환경마다 다를 수 있음 ]
백만번 수행 평균 시간(1): 13.0009102 초
백만번 수행 평균 시간(2): 13.2333294 초
백만번 수행 평균 시간(3): 12.842120199999997 초
백만번 수행 평균 시간(4): 13.160649600000006 초

반응형

+ Recent posts