Zeit ist Geld und deswegen muss Software performant sein
Wer neu in die Welt der Softwareentwicklung eintritt, denkt anfangs oft, dass Programmieren unglaublich schwierig und komplex sei. Doch sobald man die Grundlagen verstanden hat, stellt sich schnell ein Gefühl der Sicherheit ein und mit wachsendem Selbstvertrauen wächst auch der Quellcode.
In der Euphorie des Fortschritts wird dabei oft ein entscheidender Aspekt vergessen: die Performance. Dieses Thema rückt meist erst dann in den Vordergrund, wenn sich Benutzer oder Kunden über lange Ladezeiten oder eine träge Software beschweren.
Warum ist Performance so wichtig?
In unserer heutigen, schnelllebigen Welt ist Zeit ein wertvolles Gut. Niemand wartet gerne auch nicht auf ein Programm, das mit einer hübschen Ladeanimation versucht, seine Trägheit zu kaschieren. Natürlich könnte man währenddessen einen Kaffee holen, doch wenn das zu oft nötig wird, leidet irgendwann nicht nur die Produktivität, sondern auch der Koffeinspiegel.
Daher sollte Software so performant wie möglich sein: kurze Ladezeiten, flüssige Abläufe und effiziente Nutzung der Systemressourcen. Natürlich gibt es Anwendungen, bei denen längere Ladezeiten unvermeidlich sind. Hier geht es jedoch um den allgemeinen Nutzungsfall, in dem Performance ein zentrales Qualitätsmerkmal darstellt.
Wie entsteht unperformante Software?
Häufig arbeitet man als Entwickler oder Entwicklerin in einer Umgebung, in der bereits ein Grundgerüst existiert. Es ist sinnvoll, bestehende Programmiermuster und Konventionen beizubehalten. So bleibt der Code einheitlich, lesbar und wartbar.
Allerdings kann genau das auch zur Falle werden: Wird Code von einer anderen Stelle kopiert, ohne ihn genau zu analysieren, kann man unbeabsichtigt Fehler oder sogenannte Memory Leaks übernehmen. Solche Probleme bleiben oft lange unentdeckt, bis die Software langsamer wird oder im schlimmsten Fall abstürzt.
Wie kann man Performance als Entwickler/in sicherstellen?
Diese Frage sollte sich jede Entwicklerin und jeder Entwickler bei der täglichen Arbeit stellen. Im Folgenden sind einige zentrale Punkte aufgeführt, die zur Performance-Optimierung beitragen können:
1. Speicherverwaltung
Moderne Programmiersprachen und Frameworks übernehmen zwar einen Grossteil der Speicherverwaltung automatisch, dennoch ist es wichtig, darauf zu achten, dass nicht mehr benötigter Speicher wieder freigegeben wird. Bleiben reservierte Speicherbereiche unbeabsichtigt bestehen, kann das System sie nicht mehr aufräumen. Das führt zu schleichenden Performanceproblemen oder gar Abstürzen.
2. Datenbankzugriffe
Viele Anwendungen greifen regelmässig auf eine Datenbank zu. Wenn diese Zugriffe unkontrolliert oder ineffizient erfolgen, kann das schnell zu langen Wartezeiten führen. Ein häufiger Fehler ist etwa, Datenbankabfragen innerhalb von Schleifen auszuführen. Dadurch vervielfacht sich die Zugriffszeit. Auch das physische Datenmodell oder fehlende Indizes können die Performance massiv beeinträchtigen.
3. Benutzeroberfläche (UI)
Da die Benutzeroberfläche der direkte Kontaktpunkt zu den Endbenutzern ist, muss sie stabil und reaktionsschnell bleiben. Mehrfaches Auslösen derselben Aktion sollte verhindert werden. Etwa durch die temporäre Deaktivierung von Buttons oder eine Ladeanzeige. So wird vermieden, dass Prozesse gleichzeitig mehrfach gestartet werden und das System unnötig belastet wird.
4. Testen
Wenn das erwartete Datenvolumen bekannt ist, sollten Testdaten in vergleichbarem Umfang generiert und zum Testen verwendet werden. Die Verarbeitung eines zu kleinen Datenvolumens kann im zeitlichen Verhalten massiv vom effektiven Volumen abweichen.
Fazit
Lange Ladezeiten, eingefrorene Oberflächen oder sogar Abstürze durch Memory Leaks lassen sich vermeiden, wenn Codebereiche und Benutzeroberflächen regelmässig analysiert und optimiert werden.
Dazu gehören:
- das Freigeben nicht mehr genutzter Speicherbereiche,
- das Entfernen nicht mehr benötigter Event-Handler,
- das Überprüfen und Optimieren von Datenbankzugriffen und -strukturen,
- sowie eine stabile, durchdachte Benutzerinteraktion
- das Testen mit entsprechendem Datenvolumen.
Gerade bei neuem Code sollte schon während der Entwicklung auf potenzielle Performanceprobleme geachtet werden. Wer sie frühzeitig erkennt und gezielt vermeidet, spart später viel Zeit und Nerven.
Denn eines sollten wir Entwickler/innen nie vergessen: Benutzer warten nicht gerne. Ausser vielleicht dann, wenn es wirklich Zeit für eine gute Tasse Kaffee ist.
Osman Kartal, Senior Software Developer, INTEGRATE Informatik AG