TPTP

1.1 Laufzeittests / "Execution Time Analysis"

Ein Laufzeittest hat den Zweck, während des Betriebs einer Software die Laufzeiten der einzelnen Softwarekomponenten zu erfassen, so dass daraufhin der Entwickler laufzeitintensive Implementierungen aufspüren und optimieren kann.


Durchführen eines Laufzeittests:

Als Test-Software wird hier ein Tool verwendet, welches mit Sortieralgorithmen eine beliebige Zahl von Integer-Zahlen sortiert. Es existiert eine Klasse "Sort", welche die Sortieralgorithmen "BubbleSort", "SelectionSort", "InsertionSort" und "Quicksort" in einzelnen Methoden implementiert. Für diese Klasse wird nun das Kästchen "Execution Time Analysis" markiert. Mit einem Doppelklick auf "Java Profiling - JRE 1.x..." können hier noch Filter gesetzt werden, so dass lediglich die gewünschten Methoden berücksichtigt werden:

CLASSMETHOD NAMERULE
de.fhwiesbaden.*mainEXCLUDE
de.fhwiesbaden.*SortierenEXCLUDE
de.fhwiesbaden.**INCLUDE
**EXCLUDE

Anschließend wird mit "Profiling" die Messung gestartet.

Die Anzeige im folgenden Bild gibt Auskunft über den Profiling-Status:

execution_status

Mit einem Doppelklick auf "Execution Time Analysis" werden die Profiling-Ergebnisse im rechten Fensterbereich ausgegeben. (Scheinen die Werte während des Profiling-Vorgangs unrealistisch klein, hilft meist ein Refresh über rechte Maustaste -> "Refresh Views".)

Execution Statistics

Innerhalb der "Session Summary" der "Execution Statistics" schneidet das Tool für jede Klasse und Methode mit, wie lange diese jeweils anteilig an der Gesamtausführungszeit während der kompletten Laufzeit des Programms aktiv war, bzw. wie oft sie jeweils aufgerufen wurden. Die Klassen und Methoden lassen sich in einer Baumstruktur aufklappen und wie gewohnt nach den Spaltenrubriken sortieren.

Somit kann der Übeltäter mit der längsten Laufzeit schnell aufgefunden und, in diesem Beispiel, durch eine effektivere Sortiermethode ersetzt werden.

Mit einem Rechtsklick auf das Profiling-Profil lassen sich über "Open With" die Methodenaufrufe anhand von Flowcharts bzw. Sequenzdiagrammen anschaulich betrachten.

a. Execution Flow Diagramm: b. Trace Interaction UML Diagramm: c. Thread Interactions UML Diagramm:
Execution Flow Diagramm Trace Interaction UML Diagramm Thread Interactions UML Diagramm

Zu a:
Das Diagramm zeigt anhand eines Zeitbalkens die zur Programmlaufzeit aktiven Methoden. Hier kann die absolute Laufzeit jeder Methode abgelesen werden und ebenfalls ein relativer Laufzeitvergleich der angewendeten Sortieralgorithmen ist möglich (z.B. benötigte der BubbleSort am längsten).

Zu b:
In diesem Diagramm ist die Abfolge der Methodenaufrufe der Klasse "Sortieren" zu sehen. Die Ansicht gibt keine weitere Auskünfte über Laufzeiten, sonder dient lediglich der geordneten Darstellung der Methodenaufrufe einer Klasse.

Zu c:
Ähnlich wie bei Diagramm b. sind hier die durch den main-Thread ausgeführten Methoden sequentiell dargestellt.


Im Workspace wird automatisch ein Projekt "Profile Project" angelegt, welches nach Durchführung des Profiling-Vorgangs mit Code gefüllt wird. Der Code lässt sich hier nicht direkt ändern, sondern kann nur in den .probe-Dateien angepasst werden.

.probe-Dateien lassen sich per Doppelklick öffnen und bieten eine komfortable Oberfläche zur Konfiguration der Laufzeittests.

Weitere Informationen zum Bearbeiten der .probe-Dateien können dem Abschnitt 1.4 "Probe Insertion" entnommen werden.

Zurück zur TPTP-Hauptseite
Zurück zur Werkzeugübersicht