파이썬(Python)/문법

[Python] 프로그램 동작 시간 측정 함수 timeit 사용방법(Visual Studio)

끄적끄적아무거나 2022. 3. 5. 21:57
반응형

 

목차

     

     

     

     

     

     

     

    파이썬 timeit 함수 Syntax

     

    sort (정렬)이나 랜덤(Random)값을 만들거나 함수를 만들어서 동작하는데 시간이 얼마나 걸리는지 확인하는 작업은 중요합니다. 코드가 얼마나 효율적으로 만들었는지 알 수 있는 지표이기 때문입니다. 시간 측정을 위해 파이썬(Python)에서 제공하는 timeit 이라는 함수를 사용하면 쉽게 동작 시간(Operation Time)을 측정 할 수 있습니다.

     

    Syntax는 아래와 같습니다.

    timeit.timeit(stmt='함수/코드', setup='경로포함', number=동작횟수)
    timeit.repeat(stmt='함수/코드', setup='경로포함', number=동작횟수, repeat=반복횟수)

     

    timeit 은 반복 측정이냐 한번 측정이냐에 따라 timeit 함수와 repeat 함수를 사용 합니다.

     

    • stmt : 측정하고자 하는 함수나 코드를 " " 안에 넣습니다.
    • setup : 함수를 측정하고자 하면 함수를 불러오는 작업을 합니다.
    • number : 함수/코드를 몇번 실행할지를 결정 합니다.
    • repeat : number에서 결정한 횟수로 몇번 반복 측정할 지를 결정 합니다.

     

    위 주석이 이해가 되지 않으시면 아래 코드를 보시면 쉽게 이해할 수 있습니다.

     

     

     

     

    파이썬 timeit 함수 예제 실행

     

    예제 코드>>

    import timeit
    import random
    
    def random_gen(num):
        for x in range(num):
            random.random()
    
    time1 = timeit.timeit(stmt='random_gen(100)', setup='from __main__ import random_gen', number=2)
    time2 = timeit.repeat(stmt='random_gen(100)', setup='from __main__ import random_gen', number=1, repeat=3)
    print("time1 :", time1)
    print("time2 :", time2)

    4~6 번 라인: 시간을 측정할 random 생성 함수를 만듭니다.

    8번 라인 : random_get 함수를 2번 실행 시키고 시간을 측정 합니다. setup을 통해 해당 함수 위치를 포함 합니다.

    9번 라인 : number 1로 한번 실행하고 3번 반복해서 시간을 측정 합니다.

     

     

    결과>>

    time1 : 6.349990144371986e-05
    time2 : [2.5900080800056458e-05, 2.8899870812892914e-05, 2.5700079277157784e-05]

    time1은 두번 동작을 시켰기 때문에 약 2배 가까운 시간이 걸렸고 time2는 한번 동작을 3번 반복한 결과를 불러 옵니다.

     

     

     

    아래 예제는 단순 명령만 넣을 경우 실행시간을 측정하는 코드입니다. 함수가 아닌 명령이므로 setup을 설정할 필요가 없습니다. 

     

    예제 코드>>

    import timeit
    import random
    
    time1 = timeit.timeit(stmt='[x for x in range(100)]', number=2)
    time2 = timeit.repeat(stmt='[x for x in range(100)]', number=1, repeat=3)
    print("time1 :", time1)
    print("time2 :", time2)

     

    결과>>

    time1 : 2.6099849492311478e-05
    time2 : [8.499948307871819e-06, 6.6999346017837524e-06, 6.300164386630058e-06]

     

     

    반응형