Performance – der Preis der Generalisierung

Für meine Diplomarbeit erweitere ich gerade ein Stück Software. Die Software baut auf verschiedenen Frameworks auf – namentlich Spring und Hibernate. Frameworks helfen uns ja bei der Wiederverwendung von Code und vereinfachen dadurch immer wiederkehrende Aufgaben. Daneben unterstützen sie durch bestimmte Vorgaben auch ein strukturiertes Design der Software, die solch ein Framework verwendet. Gleichzeitig verursachen sie aber auch eine Menge Overhead, sind ohne entsprechende Schulung nur schwer zu verstehen und drücken die Performance des Systems.

Performance, so musste ich jüngstens erfahren, ist in großen Softwareprojekten immer wieder ein kritischer Punkt der Probleme verursacht. Eine Wichtige Information – meine Universitären Projekte hatten nie Performanceprobleme – waren aber auch um mehrere Klassen kleiner als Projekte, die es hier in der freien Wildbahn so gibt.

Die Erste Funktion, die ich realisiert habe, liest aus einer XML-Datei (mit ca. 10 Zeilen Länge) vier Parameter aus und schreibt diese in eine Datenbank. Alleine das Auslesen der Parameter aus der XML-Datei benötigt auf meinem relativ neuen Rechner mit ausreichend Arbeitsspeicher annähernd 40 Sekunden. Da die Komponente nur im Batch-Betrieb Verwendung findet, ist sie nicht Performancekritisch – man sieht aber schon wie der Overhead der verwendeten Frameworks die Leistungsfähigkeit des Gesamtsystems beeinflusst. Eine weitere Problemstelle ist das Analysieren von Fehlern – ich habe bereits Stack-Traces produziert, deren Länge annähernd drei DIN-A4 Seiten hatte. Das erschwert natürlich die Fehlersuche.

Ich glaube man muss sich bei der Verwendung eines Frameworks an jeder Stelle sehr genau überlegen, ob die Vorteile die Nachteile überwiegen – das gilt nicht nur für das Thema Performance – auch die Schulung in den Frameworks muss sorgfältig durchgeführt werden. Ein schlechtes Softwaredesign kann auch mit einem guten Framework entstehen.

This entry was posted in Studium, Technik and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>