Warum ist eine Prozedur in einer Funktion viel schneller?

8

Hier ist, was ich getan habe, ich habe 2 Prozeduren erstellt, eine in einer Funktion und eine in der Python-Datei selbst. Der eine auf der Python-Datei selbst läuft fast 2 mal langsamer, auch wenn es genau gleich ist. WARUM ?

Bellow ist ein Beispiel mit 2 Prozeduren, die nur Schleifen auf P-Element

sind

Ich habe die folgende Python-Datei:

%Vor%

Hier ist, was ich bekomme (Ich habe es mit tausend Proben versucht und das Ergebnis ist das folgende):

%Vor%

mit xrange statt range bekomme ich:

%Vor%

Also ist es wie 0,05 Sekunden in verwendet, um die Liste zu erstellen

Ich weiß, dass es eine nutzlose Frage ist, aber wenn jemand weiß, warum das so viel schneller geht, würde ich mich freuen zu wissen

    
Ricky Bobby 11.08.2011, 15:39
quelle

1 Antwort

14

Der einzige signifikante Unterschied ist, dass die Version in der Funktion nur die lokale Variable für diese Funktion aktualisiert, während die Version, die nicht in einer Funktion ist, eine globale Variable k aktualisiert.

Wie bereits erwähnt hier :

  

Die letzte Beschleunigung, die uns für die Nicht-Map-Version der for-Schleife zur Verfügung steht, besteht darin, wo immer möglich lokale Variablen zu verwenden. Wenn die obige Schleife als Funktion umgewandelt wird, werden append und top zu lokalen Variablen. Python greift viel effizienter auf lokale Variablen zu als globale Variablen.

    
Amber 11.08.2011, 15:42
quelle