Skip to content

Visual Profiler

The Visual Profiler allows the user to profile function calls. This tool works similar to the visual inspector, as several charts are provided for visualizing the data:

  • Table
  • Time Tree
  • Space Tree
  • TMC Tree
  • Timeline

The profiler measures runtime and memory usage for the function calls in a given functions call stack. The Visual Profiler then uses the interface for the Visual Inspector to display those results.

Opening the profiler

Similar to the Visual Inspector, the profiler can be opened by picking Tools, then Visual Profiler from the main view in Analyst.

Opening on an expression

The Visual Profiler can also be invoked from Analyst by selecting any q expression that invokes a function and performing one of the following operations:

  • Right-click and pick Profile from the context menu
  • Press Meta+Alt+P on the keyboard as a shortcut

runProfiler.png

The Analyst IDE will then profile the q expression that had been selected, and will present a default Table view of the Profiler result.

Entering queries into the profiler

Similar to the Visual Inspector, you can enter q queries directly into the query input line.

Profiler results

The Profiler reports four types of measurements of function performance.

Time

The runtime of the function calls as a timestamp.

Space

The memory used the function calls in bytes.

TMC

The runtime of each function call minus any time spent in the child functions as a timestamp. Thus, it reports the time spent exclusively in a given function.

SMC

The memory used by each function call minus the memory used by the most memory intensive child function, in bytes. Given that memory may be reused by child functions, this measure reports the maximum possible memory that was used exclusively by the given function.

Profiler settings

There are five settings for controlling the behavior of the Profiler.

settings description
Log Anonymous Functions It is possible to profile lambda functions within another function using this setting.
Include Functions The profiler attempts to automatically find all the functions in a call stack. This will include any that may be missed.
Include Contexts This will include all functions in any contexts that may be missed by the profiler.
Ignore Functions This will ignore any functions that the user does not want to profile.
Ignore Contexts This will ignore all functions in any contexts that the user does not want to profile.

For the Include Functions, Include Contexts, Ignore Functions, and Ignore Contexts settings, each function name should be typed into the input, separated by spaces. Include on the name of the function(s) by omitting the tick character that precedes q symbols.

In the below image, f3 is marked as a function to include while profiling, while f4 and f6 are marked as functions to ignore. Note that f3 does not need to be in the Include Functions list as it will be automatically found by the profiler. See the Profiler Function Reference for more details.

profileSettings.png

To use the updated settings the expression must be re-executed. Do to so, click on the expression in the query input line and click Enter.

Chart types

Five chart types are available in the Visual Profiler. Each available chart is outlined here along with a description of the attributes associated with each.

See the Visual Inspector for more details about viewing and accessing plots.

Table

The default chart in the Visual Profiler is a conventional table. This table works the same as the table chart for the Visual Inspector.

The table result from the Visual Profiler always has the same columns to report the profiler results.

The name of the function is reported in the name column, and the number of times that function was run is executed is reported in the calls column.

The rest of the columns are aggregations of the four profiler measurements discussed above.

| Profiler measurement | columns | ----------------------------------------------------------------| | Time | totalTime, avgTime, maxTime, minTime | | Space | avgSpace, maxSpace, minSpace | | TMC | totalTMC, avgTMC, maxTMC, minTMC | | SMC | avgSMC, maxSMC, minSMC |

As can be seen, the runtime measurements (Time and TMC) report the total, average, max, and minimum runtimes for the function calls, while the memory measurements (Space and SMC) only report the average, max, and minimum memory consumption.

profileTable.png

Time Tree

The Time Tree shows the call tree for the function, reporting the runtime of each function call as the colour and size of each node.

timeTree.png

TMC Tree

The TMC Tree shows the call tree for the function, reporting the TMC of each function call as the colour and size of each node.

tmcTree.png

Space Tree

The Space Tree shows the call tree for the function, reporting the memory used by each function call as the colour and size of each node.

spaceTree.png

Timeline

The Timeline shows a timeline of each function call, with boxes weighted by the memory used for each function.

timeline.png