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.
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:
CLASS | METHOD NAME | RULE |
de.fhwiesbaden.* | main | EXCLUDE |
de.fhwiesbaden.* | Sortieren | EXCLUDE |
de.fhwiesbaden.* | * | INCLUDE |
* | * | EXCLUDE |
Anschließend wird mit "Profiling" die Messung gestartet.
Die Anzeige im folgenden Bild gibt Auskunft über den Profiling-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".)
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: |
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