Beispielarbeiten · Code & Fehler
Performance-Profiling: den Engpass messen, beheben und das Ergebnis belegen
Ein langsames Demo-Programm: cProfile benennt die Funktion, in der die Zeit steckt, die schnelle Fassung liefert Wert für Wert dasselbe Ergebnis, die Zeit ist wiederholt gemessen. Eine Optimierung mit anderem Ergebnis wird abgewiesen.
Musterarbeit (Demo), kein Kundenauftrag. Gebaut als Probeaufgabe mit erfundenen Beispieldaten; die Prüfzahlen unten stammen aus dem automatischen Prüflauf und sind nicht geschönt.
Was gebaut wurde
- Der Profiler zeigt die Stelle, es wird nichts vermutet
- Ergebnis der schnellen Fassung ist gleich, auch bei Randfällen
- Kleinste Zeit aus mehreren Läufen
- Programm erfunden
programm-langsam.py herunterladen programm-schnell.py herunterladen
Wie geprüft wurde
Automatischer Prüflauf vom 29.10.2026, aus dem Protokoll (Testdaten erfunden, Zahlen gemessen):
- Demo-Programm: cProfile nennt doppelte als Engpass, Faktor 90 schneller bei gleichem Ergebnis (24 ms auf 0.3 ms, kleinste von fuenf Laeufen)
- falsche Optimierung abgewiesen
- 9 Pruefungen
Alle Prüffälle (9 von 9 grün)
- ✓ profiler benennt die engpassfunktion
- ✓ schnelle fassung mindestens fuenffach schneller
- ✓ ergebnis gleich bei demodaten
- ✓ ergebnis gleich bei randfaellen
- ✓ gegenprobe optimierung mit anderem ergebnis wird abgewiesen
- ✓ gemessen nicht geschaetzt
- ✓ keine ki floskeln
- ✓ kein versprechen
- ✓ demo gekennzeichnet
Grenzen
Was diese Probe nicht abdeckt, steht hier, damit niemand mehr erwartet:
- Zeiten haengen von Rechner und Datenmenge ab; der Faktor gilt fuer die Demo-Daten
- Bei Kundencode wird mit dessen echten Eingaben gemessen; uebernommen wird nur bei unveraenderten Tests
- Kein Lasttest einer Webanwendung im Netz
Der Bericht
# Performance-Profiling - Demo-Programm Kornblume (erfunden)
Musterarbeit von GL Tools, kein Kundenauftrag. Gegenstand ist ein Demo-Projekt des erfundenen Betriebs Kornblume, selbst geschrieben, ohne echte Schluessel oder Kundendaten.
Gemessen mit 3500 Demo-Bestellnummern, kleinste Zeit aus fuenf Laeufen, Standardbibliothek, lokaler Rechner.
## Messung
- Vorher: 24.2 ms, nachher: 0.27 ms, Faktor 91.
- Ergebnis der schnellen Fassung ist gleich dem der langsamen: ja (auch bei fuenf Randfaellen: ja).
## Wo die Zeit steckt (cProfile, nach kumulierter Zeit)
```
1 0.028 0.028 0.029 0.029 demo:2(doppelte)
872 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
```
Die Zeit steckt in der Funktion doppelte: fuer jede Nummer wird der Rest der Liste durchsucht (quadratisch). Die schnelle Fassung zaehlt einmal und durchlaeuft die Liste einmal (linear).
## Was diese Messung nicht kann
Zeiten haengen vom Rechner, der Datenmenge und der Auslastung ab; der Faktor gilt fuer diese Demo-Daten. Bei einem Kundenprogramm wird mit dessen echten Eingaben gemessen, und eine Aenderung wird nur uebernommen, wenn seine Tests unveraendert bestehen.So etwas für deinen Betrieb?
Beschreib kurz, was du brauchst. Du bekommst einen Festpreis, bevor ich anfange; ohne dein Ja passiert nichts.