2012-06-12 5 views
2

저는 작은 파이썬 코드 스 니펫의 실행 시간을 측정하려고하는데 최선의 방법이 무엇인지 궁금합니다.timeit.repeat() 벤치 마크에서 값 비싼 설정을 피하십시오

이상적으로는 (나는 오랜 시간이 소요되는) 일종의 설정을 실행하고 몇 가지 테스트 코드를 두 번 실행하고 이러한 실행의 최소 시간을 얻고 싶습니다.

timeit()이 적절하다고 생각되지만 설정을 다시 실행하지 않고 최소 시간을 얻는 방법을 모르겠습니다.

import timeit 

setup = 'a = 2.0' # expensive 
stmt = 'b = a**2' # also takes significantly longer than timer resolution 

# this executes setup and stmt 10 times and the minimum of these 10 
# runs is returned: 
timings1 = timeit.repeat(stmt = stmt, setup = setup, repeat = 10, number = 1) 

# this executes setup once and stmt 10 times but the overall time of 
# these 10 runs is returned (and I would like to have the minimum 
# of the 10 runs): 
timings2 = timeit.repeat(stmt = stmt, setup = setup, repeat = 1, number = 10) 
+2

설정 루틴의 결과를 변수에 저장할 수 있습니까? –

+0

더 복잡한 데이터 유형이 관련되어 있으므로 결과를 문자열에 저장할 수 없습니다 (scipy.sparse.linalg.LinearOperator). – andrenarchy

답변

1

당신이 당신을 위해 타이밍을 할 datetime를 사용하여 시도 유무 : 작은 코드 문제를 보여?

start = datetime.datetime.now() 
print datetime.datetime.now() - start #prints a datetime.timedelta object` 

시간이 경과하면 작은 오버 헤드로 시작한 시간을 제어 할 수 있습니다.

편집 : 이것은 일정한 타이밍을 위해서도 이것을 사용하는 사람의 비디오입니다. 이것은 실행 시간을 얻는 가장 쉬운 방법 인 것 같습니다. http://www.youtube.com/watch?v=Iw9-GckD-gQ