- 13 May 2024
- 2 Minutes to read
- Print
- DarkLight
- PDF
Profiling
- Updated on 13 May 2024
- 2 Minutes to read
- Print
- DarkLight
- PDF
Für Jumbo existiert im Makroeditor ein Profiler. Unter Profiling versteht man das Zeitmessen verschiedener Proceduren und Makros. Es gibt drei Arten des Profilings:
Makro-Profiling
Prozedur-Profiling
Statement-Profiling
Die drei Profiling-Arten sind über das Debug-Menü aktivierbar:
Es können alle drei Arten gleichzeitig aktiv sein. Allerdings führt das zu einer unübersichtlichen, weshalb es sich empfiehlt, nur eine Art des Profilings zu aktivieren.
Allgemeines:
Die Ergebnisse erscheinen aufsteigend nach Zeit sortiert im Output-Window.
Die Zeiten sind kumulativ; die Anzahl der Procedure-Aufrufe wird in die Zeit mitberechnet
Die Zeiten werden in Sekunden ausgegeben.
Standardmäßig werden folgende zusätzlichen Profiling-Ergebnisse ausgegeben:
ExecutionTime: Die reine Makrolaufzeit während der Konfiguration.
TotalTime: Die Gesamtdauer der Konfiguration.
Configuration-Time (Compilation / Execution / Total): Compilierzeit und nochmals ExecutionTime und TotalTime.
Beim Statement-Profiling kommt man mit Doppelklick auf eine Ausgabezeile zur entsprechenden Stelle im Quellcode.
Beim Statement-Profiling stehen die Zeiten, sofern vorhanden, in Blau links neben der Zeile anstelle der Zeilennummer. Die Zeiten sind in Zehntausendstelsekunden angegeben.
Makro-Profiling
Die Konfiguration eines Artikels in ISS besteht aus mehreren Abschnitten. ISS ruft dabei nacheinander eine Reihe von Makros auf. Beim Makro-Profiling wird die Zeit ermittelt, die diese Aufrufe benötigen. Dies ergibt eine grobe Übersicht über den Zeitbedarf einzelner Abschnitte der Konfiguration.
Von allen Makroaufrufen durch ISS hat im obigen Beispiel der Aufruf der Prozedur "FE\McrFmFE_START.VdmFpInit" am längsten gedauert.
Prozedur-Profiling
Beim Prozedur-Profiling werden die Zeiten aller Methoden gemessen, nicht nur derjenigen, die von ISS direkt aufgerufen werden.
Von allen Methodenaufrufen hat im obigen Beispiel der Aufruf der Prozedur "VdmFpInit" im Makro "FE\McrFmFE_Start.bas" an längsten gedauert.
Ein Methodenaufruf durch ISS wird gewöhnlich der am längsten dauernde Methodenaufruf sein, da er die Ausführung eines ganzen Konfigurationsabschnittes repräsentiert. Für die Optimierung von Interesse sind Methoden, die mit der RUN-Anweisung aufgerufen werden, wie z.B. "VdmFpInit" im Makro "FE\McrFmFE_Flg.bas".
Statement-Profiling
Hier werden die Ausführzeiten einzelner Anweisungen gemessen.
Mit einem Doppelklick auf eine Ausführzeit im Output-Fenster gelangt man zur entsprechenden Stelle im Makrocode. Bei Anweisungen, die überhaupt eine messbare Zeit benötigt haben, steht an Stelle der Zeilennummer die Zeit in blauer Farbe. Die Zeit wird in zehntausendstel Sekunden angegeben. Bei zusammengesetzten Anweisungen (IF, FOR, WHILE, ...) wird die Gesamtzeit einschließlich der Zeiten im jeweiligen Ausführungsteil angegeben.
Die meiste Zeit wurde hier für die FOR-Schleife in Zeile 741 benötigt, nämlich ca. eine halbe Sekunde. Das meiste davon geht auf die eingeschlossene FOR-Schleife in Zeile 765 und hier auf den Aufruf in Zeile 771. Da es sich hier um einen externen Aufruf einer Prozedur in einem Grafik-OCX handelt, kann makromäßig die FOR-Schleife in 741 nicht wesentlich beschleunigt werden, und man sollte sich auf andere Teile in den Makros konzentrieren.
Hier benötigt der Aufruf einer Makroprozedur ca. 0,3 Sekunden:
Durch Rechtsklick auf den Prozedurnamen kann man den Zeitverbrauch weiter verfolgen:
Auf diese Weise gelangt man unter Umständen zu Stellen, die sich makromäßig beschleunigen lassen, z.B. durch Umformulierung oder Verwendung eines effizienteren Algorithmus.