2016-09-23 4 views
-1

나는 다른 함수를 매개 변수로 취하고 그 특정 함수의 실행 시간을 계산하는 함수를 만들었습니다. 그러나 내가 그것을 실행할 때, 나는 이것이 작동하지 않는 이유를 이해하는 것처럼 보일 수 없다. 왜 아무도 그 이유를 알고 있습니까?주어진 함수의 실행 시간 계산하기 파이썬

import time 
import random 
import timeit 
import functools 

def ListGenerator(rangeStart,rangeEnd,lenth): 
sampleList = random.sample(range(rangeStart,rangeEnd),lenth) 
return sampleList 


def timeit(func): 
    @functools.wraps(func) 
    def newfunc(*args): 
     startTime = time.time() 
     func(*args) 
     elapsedTime = time.time() - startTime 
     print('function [{}] finished in {} ms'.format(
      func.__name__, int(elapsedTime * 1000))) 
    return newfunc 

@timeit 
def bubbleSort(NumList): 
    compCount,copyCount= 0,0 

    for currentRange in range(len(NumList)-1,0,-1): 
     for i in range(currentRange): 
      compCount += 1 
      if NumList[i] > NumList[i+1]: 
       temp = NumList[i] 
       NumList[i] = NumList[i+1] 
       NumList[i+1] = temp 
    # print("Number of comparisons:",compCount) 



NumList = ListGenerator(1,200,10) 
print("Before running through soriting algorithm\n",NumList) 
print("\nAfter running through soriting algorithm") 
bubbleSort(NumList) 
print(NumList,"\n") 
for i in range (0, 10, ++1): 
print("\n>Test run:",i+1) 
bubbleSort(NumList) 
compCount = ((len(NumList))*((len(NumList))-1))/2 
print("Number of comparisons:",compCount) 

실행시 화면이 enter image description here

+0

'timeit'을 모듈과 데코레이터의 이름으로 사용합니다. 그 확인은? –

+0

예 데코레이터의 이름을 변경하고 다시 실행했습니다. 버그가 아직 남아 있습니다 :/@vishes_shell –

+1

'bubbleSort (list (range (10000)))를 실행하십시오. –

답변

0

코드가 단지 믿을 수 없을만큼 빠른 실행처럼 보이는 촬영.

@timeit 
def bubbleSort(NumList): 
    compCount,copyCount= 0,0 

    for i in range(10000): 
     for currentRange in range(len(NumList)-1,0,-1): 
      for i in range(currentRange): 
       compCount += 1 
       if NumList[i] > NumList[i+1]: 
        temp = NumList[i] 
        NumList[i] = NumList[i+1] 
        NumList[i+1] = temp 

이제 결과는 다음과 같습니다 : bubbleSort에서 필자는 비교 다른 10000 시간을 실행하기 위해 추가 for 루프를 추가

('Before running through soriting algorithm\n', [30, 18, 144, 28, 155, 183, 50, 101, 156, 26]) 

After running through soriting algorithm 
function [bubbleSort] finished in 12 ms 
([18, 26, 28, 30, 50, 101, 144, 155, 156, 183], '\n') 
('\n>Test run:', 1) 
function [bubbleSort] finished in 12 ms 
('Number of comparisons:', 45) 
('\n>Test run:', 2) 
function [bubbleSort] finished in 8 ms 
('Number of comparisons:', 45) 
('\n>Test run:', 3) 

등 ... @vishes_shell 점 의견이 밖으로뿐만 아니라 .

+1

안녕하세요 고마워요 :) –