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