Prozess Profiling
Beschreibung
Diese App steuert das Profiling von Ablaufprozessen, also von beliebig ausgeführtem InstantView®-Code. Durch das Profiling kann untersucht werden
- wo die Zeit im Einzelnen bleibt
- welcher Code für einen Vorgang ausgeführt wird
- welche Messages getriggert werden und welche diese wiederum triggern
Funktionalität
Symbol | Beschreibung |
---|---|
Protokoll Datei laden Ein Dialog öffnet sich, in dem eine Protokolldatei ausgewählt werden kann. Diese wird anschließend analysiert. |
|
Profiling starten Bevor es richtig losgeht, ist eine Protokolldatei auszuwählen, in das Profiling-Protokoll abgelegt wird. Diese Datei wird im XML-Format vorliegen und sollte die Endung .xml tragen. Anschließend werden alle Aktionen, je nach Detailgrad, aufgezeichnet! Der Detailgrad kann nachträglich nicht verändert werden. Das Profiling kann über den roten Stop-Button beendet werden. |
|
Profiling beenden Die Protokolldatei wird abgeschlossen und anschließend analysiert. |
Feld | Beschreibung |
---|---|
Profile Level | Vor dem Profiling ist der Detailgrad einzustellen. Je detaillierter das Protokoll ist, desto größer wird es und braucht entsprechend mehr Zeit bei der Auswertung. |
: Messages und Makros | Alle getriggerten Messages und aufgerufenen Makros |
: Statements | Alle Statements (IV-Befehle) |
: C++-Funktionen | Alle C++-Funktionen (i.d.R. Model-Funktionen) |
: Datenbankoperationen | Alle Datenbankoperationen (Transaktionen, Lese- und Schreiboperationen) |
Auswertung | Die Aufzeichnungen aus der Protokolldatei werden analysiert und in einem Baum grafisch dargestellt. Für diese Analyse kann der Detailgrad eingeschränkt werden, um den Baum übersichtlich zu halten: |
: Messages CURRENT, NON_CURRENT und INITIALIZE ignorieren |
Diese Messages werden übersprungen und im Baum nicht angezeigt |
: Statements ignorieren | Sämtliche einzelne Befehle werden übersprungen, d.h. es bleiben nur Messages, Makros und Datenbankoperationen übrig |
: 'Define' ignorieren | Beginn und Ende eines Makros werden übersprungen; nützlich, wenn alle Statements angezeigt werden, denn dann ist die Anzeige der einzelnen Makros meist redundant (Ausnahme: wenn bei der Anzeige in einer ListView z.B. Makros aufgerufen werden) |
: C++-Funktionen ignorieren | Profiledaten über C++-Funktionen werden übersprungen |
: Datenbankoperationen ignorieren | (selbsterklärend) |
Knopf | Beschreibung |
---|---|
Aktualisieren | Anzeige des Baums und der Listen mit den Einstellung für die Auswertung neu darstellen |
Neuer Profiler | Neues Profiler-Fenster öffnen. Sie können darin eine andere Profilerdatei laden um zwei Profile miteinander zu vegleichen. |
Profiler-Datei laden | siehe |
Profiling starten | siehe |
Profiling stoppen | siehe |
Je nach Protokollumfang und den oben gemachten Einschränkungen kann die Analyse etwas dauern. Die Analyse kann selbstverständlich abgebrochen werden (je nach dem, was im System eingestellt ist, z.B. mit Strg-F12).
Um dem Wust an Daten Herr zu werden, kann außerdem eine Cluster-Analyse durchgeführt werden.
Baum
In diesem Beispiel wurde eine Stückliste aufgelöst. Die Analyse wurde auf Messages und Makros beschränkt. Einige Beispiele sollen bei der Interpretation des Baumes helfen:
- Der gesamte Vorgang dauerte ca. 30 Sekunden (Zeile 1).
- Die Ja/Nein-Abfrage dauerte 1,3 Sekunden - in dieser Zeit wartete das System auf die Antwort durch den Benutzer (dritte Message).
- BATCH_ITEM_DISPOSITION dauerte insgesamt ca. 15 Sekunden. Diese verteilen sich hauptsächlich auf das Makro 'FillHiddenList' (ca. 6 Sekunden) und PROCESS_ITEM_DEMAND (ca. 8 Sekunden).
Wie berechnet sich die Dauer? Die Dauer entspricht dem Zeitraum, der zwischen dem Beginn des betreffenden Statements und dem Beginn des nächsten Statements verging. Wenn 'CleanUp' zwei Sekunden in Anspruch nimmt, heißt das, dass von Beginn von 'CleanUp' bis zum Beginn des nächsten Befehls zwei Sekunden vergingen. Es ist nicht bekannt, wie viel Zeit 'CleanUp' genau brauchte, sondern nur, wie viel Zeit bis zum nächsten Statement verstrich! 'CleanUp' braucht aber deutlich weniger Zeit - die restliche Zeit ging beim Warten auf Benutzereingaben drauf:
Zeitindex | Statement | Erläuterung |
---|---|---|
1 s | CleanUp | Befehl braucht nur wenige Millisekunden zur Ausführung |
? | - | Hier wird auf eine Benutzereingabe gewartet |
3 s | Dup |
In der Regel braucht darauf nicht geachtet zu werden. Bei ungewöhnlich zeitraubenden Statements sollte aber nicht vergessen werden, dass direkt nach dem Statement möglicherweise auf eine Eingabe gewartet wurde.
Verwandte Themen
Technische Dokumentation
Profiler App
Modulname
profilingEdit.app
Klassen
Security
Neben der Beschränkung der Zugriffsrechte über die Klasse und deren Datenfelder kann das Modul über einige der empfangenen Messages in seiner Nutzung beschränkt werden.
Message | Parameter | Funktion | Security |
---|---|---|---|
EDIT_PROFILING | Öffnet das Listenfenster |
Message | Parameter | Funktion | Empfangs-Modul |
---|---|---|---|
Keine |