Ich habe diese Frage gefunden, weil ich eine Frage stellen wollte, warum es Auswirkungen auf die Leistung gibt, wenn verschachtelte Funktionen verwendet werden. Ich habe Tests für die folgenden Funktionen mit Python 3.2.5 auf einem Windows-Notebook mit einem Quad Core 2,5-GHz-Intel i5-2530M-Prozessor durchgeführt
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
Ich habe die folgenden 20 Male gemessen, auch für Quadrat1, Quadrat2 und Quadrat5:
s=0
for i in range(10**6):
s+=square0(i)
und bekam die folgenden Ergebnisse
>>>
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
hat keine verschachtelte Funktion, square1
hat eine verschachtelte Funktion, square2
hat zwei verschachtelte Funktionen und square5
hat fünf verschachtelte Funktionen. Die verschachtelten Funktionen werden nur deklariert, aber nicht aufgerufen.
Wenn Sie also 5 verschachtelte Funktionen in einer Funktion definiert haben, die Sie nicht aufrufen, beträgt die Ausführungszeit der Funktion das Doppelte der Funktion ohne verschachtelte Funktion. Ich denke, sollte vorsichtig sein, wenn verschachtelte Funktionen verwendet werden.
Die Python-Datei für den gesamten Test, der diese Ausgabe generiert, befindet sich unter ideone .