Performance (S)

3.2. Performance (S)#

Behauptung

„Python ist langsam.“

Diese Aussage taucht in der Praxis häufig auf – und führt schnell zu Missverständnissen. Denn: Ob „Python langsam“ ist, hängt davon ab, was Ihr Programm macht und wie der Python-Code ausgeführt wird.

Reiner Python-Code (z.B. Schleifen, viele kleine Funktionsaufrufe, dynamische Typprüfungen) ist oft langsamer als nativer Maschinencode aus einer kompilierten Sprache wie C/C++. Gleichzeitig laufen viele „Python‑Programme“ schnell, weil sie intern hochoptimierte Bibliotheken nutzen, die wiederum in C/C++ (oder ähnlichen Sprachen) implementiert sind.

Was steckt dahinter?

Ein Computer führt am Ende Maschinencode aus (0 und 1). Quellcode in einer höheren Programmiersprache muss daher in eine ausführbare Form übersetzt werden. Dieses Grundprinzip ist bei allen Sprachen gleich []. Der Unterschied liegt darin, wann und wo diese Übersetzung passiert – nicht darin, ob sie passiert.

../../_images/sprachverarbeitendes-system.png

Abb. 3.2 Sprachverarbeitendes System: Quellcode wird immer kompiliert und interpretiert. Kompilierte Sprachen und interpretierte Sprachen unterscheiden sich nur wann und wo das passiert.#

Wenn ein Programm in einer kompilierten Sprache erstellt wurde, erhalten Sie typischerweise eine ausführbare Datei:

meine-anwendung.exe

Bei einer „Skriptsprache“ starten Sie Quelltext üblicherweise über ein Ausführungsprogramm:

python3 meine-anwendung.py

Der wichtige Unterschied ist dabei:

  • Bei kompilierten Programmen liegt der Maschinencode in der erzeugten Binärdatei**

  • bei Skript-/Interpreter-Setups steckt ein großer Teil der Ausführung in python3 (dem Interpreter), während Ihr .py-File als Quelltext bestehen bleibt.

../../_images/interpretationcompilation.png

Abb. 3.3 Vergleich zwischen Kompilierung und Interpretation#

Was passiert bei Python konkret?

Die Aussage „Python wird interpretiert“ ist als Vereinfachung weit verbreitet – technisch ist es besser, Python als Hybrid zu verstehen:

  • Der Python-Interpreter (z.B. CPython) enthält eine Compiler-Komponente, die Quelltext in Bytecode übersetzt (Zwischenform).

  • Eine Ausführungs-Komponente (oft als Python Virtual Machine / PVM beschrieben) führt diesen Bytecode aus.

../../_images/python-einfach.png

Abb. 3.4 Python-Interpreter: Kompilierung und Interpretation#

Ein detailliertes Schritt-für-Schritt-Beispiel finden Sie im Expertenwissen-Kapitel zur Interpretation (und als Vergleich im Expertenwissen-Kapitel zur Kompilierung).

Merke

In der Praxis heißt es oft „entweder kompiliert oder interpretiert“. Streng genommen findet bei Programmiersprachen immer eine Form von Übersetzung und Ausführung statt. Der Unterschied liegt im wo und wann.

Merke

„Python-Interpreter“ und „Python Virtual Machine“ werden oft synonym verwendet. Technisch ist die PVM jedoch nur der Teil, der den Bytecode ausführt; der Interpreter umfasst zusätzlich das Übersetzen (Quelltext → Bytecode).

Klarstellung

„Python ist langsam“ ist weder komplett richtig noch komplett falsch.

  • Wenn ein Programm vor allem rechnet (z.B. viele Schleifen, viele kleine Operationen in reinem Python), ist es im Vergleich zu nativ kompiliertem Code (z.B. C/C++) oft langsamer.

  • Wenn ein Programm vor allem wartet (z.B. Datei lesen/schreiben, Netzwerk), ist es häufig nicht durch Python selbst limitiert.

  • Viele Python‑Workflows sind schnell, weil sie Bibliotheken verwenden, die intern hochoptimiert sind.

  • „Python‑Performance“ hängt auch von der Implementierung ab: Verschiedene Interpreter/Übersetzer können denselben Code unterschiedlich schnell ausführen (Standard: CPython, in C implementiert).

Empfehlung

Im Berufsalltag begegnen Ihnen meist sowohl interpretierten Sprachen (z. B. Python, Octave) als auch kompilierten Sprachen (z. B. C++, Java). Wir empfehlen Ihnen, dass Sie im Laufe Ihres Studiums zusätzlich zu Python mindestens eine statisch typisierte, kompilierte Sprache zu erlernen!