Globale Variablen sind langsam
Zur Navigation springen
Zur Suche springen
Globalen Variablen wird nachgesagt, sie seien langsam.
Ich bin auf diesen Python Code: Local vs Global Variables Artikel gestoßen.
Der Verfasser begründet das so:
Hinter den Kulissen passiert folgendes:
- Python sucht zunächst im lokalen Bereich der Funktion nach global_var.
- Wenn es global_var nicht lokal findet, sucht es im umgebenden Bereich, der in diesem Fall der globale Bereich ist.
- Dieser Prozess der Bereichsprüfung findet in jeder Iteration der Schleife statt und führt zu unnötigem Overhead.
Er hat dazu ein Beispiel angeführt, dass ich nachvollzogen habe.
Hier die Micropythontestumgebung:
MicroPython v1.24.0 on 2024-10-25; ESP32C6 module with ESP32C6
Hier mein Programmcode:
# global_test_001.py
from time import ticks_us
global_var = 10
def func1():
ans = 0
for i in range(1000):
ans += global_var * i
return ans
start = ticks_us()
func1()
stop = ticks_us()
print(f'Mit globaler Variablen {stop-start} µs.')
def func2():
ans = 0
local_var = global_var # Copy the global variable to a local variable
for i in range(1000):
ans += local_var * i # Use the local variable instead
return ans
start = ticks_us()
func2()
stop = ticks_us()
print(f'Mit lokaler Variablen {stop-start} µs.')
def func3(local_var):
ans = 0
for i in range(1000):
ans += local_var * i # Use the local variable instead
return ans
start = ticks_us()
func3(global_var)
stop = ticks_us()
print(f'Mit Variable als Parameter {stop-start} µs.')
Hier das Ergebnis:
Mit globaler Variablen 4707 µs. Mit lokaler Variablen 4051 µs. Mit Variable als Parameter 4042 µs.
Globale Variablen sind also tatsächlich langsamer. Hier um ca. 14%.
[Bearbeiten | Quelltext bearbeiten]
Zurück zur Hauptseite
Zurück zur Python Übersichtseite
Zurück zur Variablen Übersichtseite