Process profiling
Description
This app controls the profiling of processes, i.e. of any InstantView® code that can be executed. The profiling allows the following to be examined
- where time remains in detail
- which code is executed for an operation
- which messages are triggered and which messages trigger them
Functionality
Symbol | Description |
---|---|
![]() | Loading a protocol file A dialog box opens in which a log file can be selected. This is then analysed. |
![]() | Start profiling Before you start, you must select a log file in which the profiling log is stored. This file will be in XML format and should have the extension .xml. Afterwards all actions will be recorded, depending on the level of detail! The level of detail cannot be changed afterwards. Profiling can be stopped by pressing the red stop button. |
![]() | End profiling The log file is completed and then analyzed. |
Field | Description |
---|---|
Profile Level | Before profiling, set the level of detail. The more detailed the protocol is, the larger it will be and the more time will be needed for evaluation. |
: Messages and macros | All triggered messages and called macros |
Statements | All statements (IV commands) |
: C++ functions | All C++ functions (usually model functions) |
: Database operations | All database operations (transactions, read and write operations) |
Evaluation | The records from the log file are analysed and graphically displayed in a tree. For this analysis, the level of detail can be restricted in order to keep the tree clear: |
: Messages CURRENT, NON_CURRENT and ignore INITIALIZE | These messages are skipped and not displayed in the tree |
Ignore statements | All individual commands are skipped, i.e. only messages, macros and database operations remain |
Ignore 'Define | Start and end of a macro are skipped; useful if all statements are displayed, because then the display of the individual macros is usually redundant (exception: if macros are called when displayed in a ListView, for example) |
: Ignore C++ functions | Profile data via C++ functions are skipped |
Ignore database operations | (self-explanatory) |
button | Description |
---|---|
Update | Re-display the tree and lists with the settings for the evaluation |
New Profiler | Open new profiler window. You can load another profiler file to compare two profiles. |
Load Profiler file | see |
Start profiling | see |
Stop profiling | see |
Depending on the scope of the protocol and the restrictions made above, the analysis may take some time. The analysis can of course be aborted (depending on what is set in the system, e.g. with Ctrl-F12).
A cluster analysis can also be carried out to get the jumble of data under control.
Tree
In this example, a bill of material was exploded. The analysis was limited to messages and macros. Some examples should help to interpret the tree:
- The whole process took about 30 seconds (line 1).
- The yes/no query lasted 1.3 seconds - during this time the system waited for the user to reply (third message).
- BATCH_ITEM_DISPOSITION lasted about 15 seconds in total. These are mainly distributed between the macro 'FillHiddenList' (approx. 6 seconds) and PROCESS_ITEM_DEMAND (approx. 8 seconds).
How is the duration calculated? The duration is the time that elapsed between the beginning of the statement in question and the beginning of the next statement. If 'CleanUp' takes two seconds, this means that two seconds have passed from the start of 'CleanUp' to the start of the next command. It is not known exactly how much time 'CleanUp' took, only how much time passed until the next statement! But 'CleanUp' takes much less time - the rest of the time was spent waiting for user input:
Time index | Statement | Explanation |
---|---|---|
1 s | CleanUp | command takes only a few milliseconds to execute |
? | - | Waiting for a user input here |
3 s | Dup |
As a rule, this need not be taken into account. In the case of unusually time-consuming statements, however, it should not be forgotten that there may have been a wait for input directly after the statement.
Related topics
Technical documentation
Profiler App
Module name
profilingEdit.app
Classes
Security
In addition to restricting access rights via the class and its data fields, the module can be restricted in its use via some of the received messages.
Message | Parameters | Function | Security |
---|---|---|---|
EDIT_PROFILING | Opens the list window |
Message | Parameters | Function | Receiver module |
---|---|---|---|
None |