Statische Performance-Analyse

Thomas Lamperstorfer.

Statische Performance-Analyse

Masterarbeit, Institut für Informatik, Technische Universität München in Kooperation mit der itestra GmbH, 2011.

Abstract

Thema dieser Arbeit war es, die Möglichkeiten der statischen Analyse zur Aufdeckung von Performance-Problemen zu untersuchen. Die Fragestellung lautete: Lassen sich mit Hilfe rein statischer Analysen Performance-technisch signifikante Systemteile in betrieblichen Informationssystemen mit relationalen Datenbanken auffinden? Wie müsste ein solches Analysesystem aufgebaut sein und inwieweit lassen sich damit bekannte Performance-Anti-Pattern nutzen um Optimierungsmaßnahmen vorzuschlagen?
Anhand der Literatur konnte gezeigt werden, dass diese Art der Analyse so noch nicht versucht wurde, jedoch Vorarbeiten zu Teilbereichen der Arbeit wie der Pfadvorhersage vorlagen. Im nächsten Schritt wurden die Anforderungen an ein Performance-Modell erarbeitet, wobei insbesondere Java- und COBOL-Systeme untersucht wurden. Daraus resultierte eine Abstraktionsschicht über dem Quellcode, die nur noch die Performancekritischen Konstrukte wie zum Beispiel Schleifen, Prozeduraufrufe und Datenbankabfragen enthält und daher das ,,Performance-Modell” genannt wurde. Diese Abstraktion erlaubt es, schnelle und einfache Analysealgorithmen zur Kostenschätzung und zur Erkennung der Anti-Pattern zu entwerfen.
Zur Evaluierung des Konzeptes des Performance-Modells wurden die Rolle und die Auffindbarkeit relevanter Performance-Anti-Pattern im Quellcode untersucht. Wären die problematischen Aspekte nicht im Modell enthalten gewesen, hätte es wahrscheinlich auch keine validen Aussagen über den Ressourcenverbrauch erbringen können. Außerdem wurde eine solche statische Analyse für COBOL-Systeme mit eingebetteten SQL-Datenbankzugriffen implementiert und auf einem in der Industrie verwendetem System evaluiert. Dabei zeigte sich, dass die statische Analyse in der Lage ist, eine kostengünstige Laufzeitabschätzung zu erbringen, die gut mit den dynamischen Messungen korreliert und die zu optimierenden Programmteile auffindet. Somit stellt die statische Performance-Analyse definitiv eine Alternative zur gängigen Praxis der Performance-Tests, Lasttests und Profiling-Verfahren dar, zumal diese aufgrund der benötigten realistischen Testfälle und Testumgebung oft schwer anwendbar sind.