2012-10-13 4 views
4
timeit.timeit("A0([randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")])", setup="from HW2 import A0", number=1000000) 

A0 알고리즘이 크기 n의 목록에서 작업을 완료하는 데 걸리는 시간을 측정하고 싶지만 목록을 생성 한 다음이를 변수로 timeit에 전달하는 방법을 찾을 수 없습니다. .timeit (...) 메소드. 타이머는 A0이 완료되는 데 걸리는 시간 만 측정합니까 아니면 목록 생성도 측정에 포함됩니까?파이썬의 timeit (...) 메서드는 실제로이 코드에서 어떤 코드를 사용합니까?

답변

3

이것은 명령문의 모든 실행 시간 (첫 번째 인수)을 측정하므로 A0에 대한 호출 측정 만 원하면 목록 작성시 결과가 왜곡됩니다. 설정의 목록을 작성

시도 :

timeit.timeit("A0(aList)", setup="from HW2 import A0; aList = [randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")] ", number=1000000) 

목록은 타이머의 시작, 한 번 생성, 그리고 것이 타이밍에 포함.

+0

그래서이 목록을 변수로 전달하는 방법이 있습니까? –

+0

방금 ​​보여 줬어. 설정에서 수행하십시오. 그것은 성명서에서 사용할 수 있습니다. 또는 A0 – jdi

+0

의 수입품과 함께 제공되는 변수로 만드십시오. 환상적입니다. 백만 달러 감사드립니다. –

0

목록 생성 시간이 포함됩니다 (timeit을 호출 할 때 따옴표 사이에있는 값).