Analyze JavaScript Function Timing data in Store apps
This topic describes the performance data for JavaScript code that is presented in the report views of the JavaScript Function Timing tool in the Performance and Diagnostic hub. To collect JavaScript function timing data, see one of these topics:
Collect JavaScript function timing data in Store apps on a local machine
Collect JavaScript function timing data in Store apps on a remote device
In this topic
Open a profiling report file
Types of profiling data
Types of profiling report views
Profiling report views
Summary view
Function Details view
Call Tree view
Caller / Callee view
Modules and Functions views
Customizing data grid views
Open a profiling report file
When you stop a profiling run from the Visual Studio IDE, the performance data is automatically displayed in a document.
To open a profiling report (.vspx) file that was generated by the VSPerf command line tool or that was saved after a previous profiling run, do this:
If necessary, open Visual Studio.
On the File menu, choose Open File.
In the Open File dialog box, navigate to the folder containing the profiling report file and then choose the report file.
Types of profiling data
Profiling data for a function includes total, average, minimum, and maximum time and percentages. The data is calculated for two sets of timing values:
Elapsed Inclusive values are the total amount of time a function took to execute.
Elapsed Exclusive values are the amount of time a function spent executing only its own code. The values do not include time spent in child functions.
Types of profiling report views
Profiling report views display data in two ways:
Call graph views show you information about functions in the context of execution paths. The Hot Path tree on the Summary window shows the execution path in which your application cumulatively spent the most time during the profiling run. The Call Tree view is a call graph for all the functions in the profiling run. The Function Details and Caller/Callee views focus on a selected function, displaying the functions that called the selected function, and the functions that it called. Call graph views help you to find performance issues in your algorithms
Function list views sort and list functions by a selected data column. The Functions With Most Individual Work list on the Summary page shows you the functions that spent the most time executing their own code, excluding the time that the function was calling child functions. The Modules view groups functions by source file for JavaScript code, and by module for other languages. The Functions view is a single list of functions.
Profiling report views
Summary view
The Summary page gives you two views of the profiling data that can often point you to the best candidates for performance optimization.
The Hot Path tree shows you the call stack in which your application cumulatively spent the most time during the profiling run. Understanding the reason that this algorithm takes up so much time can lead to an optimization.
The Functions With Most Individual Work list presents the ten functions that used the most exclusive time. You can achieve quick and significant performance gains by optimizing the function code or reducing the number of times these functions are called.
Function Details view
The Cost Distribution bar chart represents the relationships between a function that you select and the calling functions that executed the selected function, and between the selected function and the functions that were called by it.
The Calling Functions bar shows the functions that called the selected function. The size of a calling function block indicates the percentage of the total execution time of the selected function that was caused by the calling function.
The Selected Function bar indicates the relative amount of the total execution time that the selected function spent executing its own code (the Function Body block) and the amount of time spent executing functions called by the selected function.
The Called Functions bar shows the functions that were called by the selected function. The size of a called function block indicates the percentage of the total execution time of the called function that was spent in the called function.
Call Tree view
You can use the Call Tree view to explore the function execution paths that were traversed in your app. The root of the tree is the entry point into the app. Each function node lists all the functions that it called and performance data about those function calls. The function values in the Call Tree view are for the function instances that were called by the parent function in the call tree. Percentage values are the ratio of the time of the function instances value to the total execution time of the profiling run.
To focus on one node of the Call Tree view, select the node and then choose Set Root on the shortcut menu. When you set the root node, you eliminate all other entries from the view except the subtree of the selected node. To reset the root node back to the original node, choose Reset Root on the shortcut menu.
Call Tree view columns
Column name |
Description |
---|---|
Number of Calls |
The number of calls to the function by the parent function in the call tree. |
Elapsed Inclusive Time % |
The total percentage of execution time spent running this function. |
Elapsed Exclusive Time % |
The total percentage of execution time spent running the body of a function. This excludes time spent in functions called by the function. |
Avg Elapsed Inclusive Time |
The average time spent running this function. |
Avg Elapsed Exclusive Time |
The average time spent running this function. This excludes time spent in functions called by the function. |
Module Name |
For JavaScript functions, the name of the source file that contains the function. Otherwise, the name of the module (.dll or .exe) that contains the function. |
Caller / Callee view
The Caller/Callee view is a tree representation of the data in the Function Details Cost Distribution bar chart of the Summary view that includes all timing details. Use the Caller / Callee view to investigate the relationship between a selected function and the functions that called it and the function that it called. The Caller / Callee view is made up of three grids.
The Current function that is displayed in the middle grid displays profiling information about the selected function. The values include all calls to the function. The Functions that called the current function are displayed in the top grid and the Functions that were called by the current function are displayed in the bottom grid. The values of the current function are the totals from all calls to the function. The values of the calling and called functions include only the time that was spent calling or being called by the selected function.
To navigate the call trees of a function, double-click a calling or a called function. The function that you double-click becomes the new selected function. Its callers and called functions are now visible.
Caller/Callee view columns
Column name |
Description |
---|---|
Number of Calls |
|
Elapsed Inclusive Time % |
|
Elapsed Exclusive Time % |
|
Avg Elapsed Inclusive Time |
|
Avg Elapsed Exclusive Time |
|
Module Name |
For JavaScript functions, the name of the source file that contains the function. Otherwise, the name of the module (.dll or .exe) that contains the function. |
Modules and Functions views
The Modules and Functions views display the details of the profiling data for the functions in the profiling report. The Modules view organizes the JavaScript functions by the .js source file that contains them. Other functions are listed by the module, such as a .dll. The Function view lists all functions without using a hierarchy. Finding your own code in the Modules view is often easier than the Functions view, but you might find it easier to compare functions in the Functions view.
Modules and Functions views columns
Column name |
Description |
---|---|
Number of Calls |
The number of calls to the function. |
Elapsed Inclusive Time % |
The percentage of the total execution time in the profiling run that was spent executing the function. |
Elapsed Exclusive Time % |
The percentage of the total execution time that was spent executing the function. This value excludes the time spent in functions that were called by the function. |
Avg Elapsed Inclusive Time |
The average execution time of the function. |
Avg Elapsed Exclusive Time |
The average execution time of the function. This value excludes the time spent in functions called by the function. |
Module Name |
For JavaScript functions, the name of the source file that contains the function. Otherwise, the name of the module (.dll or .exe) that contains the function. |
Customizing data grid views
You can add or remove data columns and change the order in which the columns are displayed. Right-click a data row and choose Add/Remove Columns.
Note
When the instrumentation method is used for managed and native code, additional information about code execution is collected and presented in the Application Inclusive, and Application Exclusive timing fields. This information is not available in JavaScript, so the Application values are the same as Elapsed values. We do not recommend adding these fields to a view.
Additional profiling data columns
Column name |
Description |
---|---|
Function Name |
The name of the function. |
Function Address |
The address of the function. |
Function Line Number |
The line number of the start of this function in the source file. |
Number of Calls |
The total number of calls that are made to this function. |
Source File |
The source file that contains the definition for this function. |
Module Name |
The name of the module that contains the function. |
Module Path |
The path of the module that contains the function. |
Process ID |
The process ID (PID) of the profiling run. |
Process Name |
The name of the process. |
Time Exclusive Probe Overhead |
The time overhead for this function that is caused by instrumentation. It doesn’t include overhead in functions that were called by the function. Probe overhead has been subtracted from all exclusive times. |
Time Inclusive Probe Overhead |
The time overhead for this function and its child functions that is caused by instrumentation. It does include overhead in functions that were called by the function. Probe overhead has been subtracted from all inclusive times. |
Elapsed Exclusive Time |
The total elapsed exclusive time of all calls to this function. |
Max Elapsed Exclusive Time |
The maximum elapsed exclusive time of a call to this function. |
Min Elapsed Exclusive Time |
The minimum elapsed exclusive time of a call to this function. |
Elapsed Inclusive Time |
The total elapsed inclusive time of all calls to this function. |
Max Elapsed Inclusive Time |
The maximum elapsed inclusive time of a call to this function. |
Min Elapsed Inclusive Time |
The minimum elapsed inclusive time of a call to this function. |