중첩 된 함수를 사용하는 경우 성능에 미치는 영향에 대한 질문을하고 싶기 때문에이 질문을 찾았습니다. 쿼드 코어 2.5GHz Intel i5-2530M 프로세서가 장착 된 Windows 노트북에서 Python 3.2.5를 사용하여 다음 기능에 대한 테스트를 실행했습니다.
def square0(x):
return x*x
def square1(x):
def dummy(y):
return y*y
return x*x
def square2(x):
def dummy1(y):
return y*y
def dummy2(y):
return y*y
return x*x
def square5(x):
def dummy1(y):
return y*y
def dummy2(y):
return y*y
def dummy3(y):
return y*y
def dummy4(y):
return y*y
def dummy5(y):
return y*y
return x*x
square1, square2 및 square5에 대해서도 다음 20 회 측정했습니다.
s=0
for i in range(10**6):
s+=square0(i)
다음 결과를 얻었습니다
>>>
m = mean, s = standard deviation, m0 = mean of first testcase
[m-3s,m+3s] is a 0.997 confidence interval if normal distributed
square? m s m/m0 [m-3s ,m+3s ]
square0 0.387 0.01515 1.000 [0.342,0.433]
square1 0.460 0.01422 1.188 [0.417,0.503]
square2 0.552 0.01803 1.425 [0.498,0.606]
square5 0.766 0.01654 1.979 [0.717,0.816]
>>>
square0
중첩 함수가없고, 중첩 함수 square1
가 하나 있으며 , 중첩 함수 square2
가 2 개 이며, 중첩 함수 square5
가 5 개 있습니다. 중첩 함수는 선언되었지만 호출되지는 않습니다.
따라서 호출하지 않는 함수에 5 개의 중첩 함수를 정의한 경우 함수의 실행 시간은 중첩 함수가없는 함수의 두 배입니다. 중첩 함수를 사용할 때 조심해야한다고 생각합니다.
이 출력을 생성하는 전체 테스트의 Python 파일은 ideone 에서 찾을 수 있습니다 .