vRO Code Performance Logger
Identifying and understanding potential performance issues with vRO code has always been a difficult endeavor. In most cases, debug code is added to suspect code segments to determine where potential bottlenecks exist and perhaps why the bottleneck is occurring. This type of debug code is reactionary, limited in scope and effect, and typically removed or forgotten once the immediate bottleneck is defined.
What is needed is a standardized method of adding code performance measurements inline for any vRO code segment (action, workflow, scriptable task, external call, etc.) that can be consolidated and presented in a normalized way.
The basic time measurement in vRO (and any other code engine) is done by calculating the difference between two time variables, typically startTime and endTime. Once the time measurement is available, it can be as simple as printing the value to a log to make it available.
The issues faced within vRO code with regard to time measurements are:
- How to save the start time of a measurement when traversing multiple vRO code elements
- How to have multiple time measurements in flight
- How to view all time measurements and consolidate equivalent measurements graphical data.
The solution has fixed on a single vRO action to ���mark��� any start time and provide the time measurement when called a second time. To make multiple in-flight measurements possible each time variable is identified either by the current workflow token id or by a UUID provided in the vRO action input. When the time measurement is complete a standard log entry is made that can be parsed by vRealize Log Insight to provide consolidated data views.