| Simulink® | ![]() |
| On this page… |
|---|
The profiler captures data while your model runs and identifies the parts of your model requiring the most time to simulate. You use this information to decide where to focus your model optimization efforts.
Note You cannot use the Rapid Accelerator mode with the profiler. |
Performance data showing the time spent executing each function in your model is placed in a report called the simulation profile.
The following pseudocode summarizes the execution model on which the profiler is based.
Sim() ModelInitialize(). ModelExecute() for t = tStart to tEnd Output() Update() Integrate() Compute states from derivs by repeatedly calling: MinorOutput() MinorDeriv() Locate any zero crossings by repeatedly calling: MinorOutput() MinorZeroCrossings() EndIntegrate Set time t = tNew. EndModelExecute ModelTerminate EndSim
According to this conceptual model, your model is executed by invoking the following functions zero, one, or more times, depending on the function and the model.
| Function | Purpose | Level |
|---|---|---|
| sim | Simulate the model. This top-level function invokes the other functions required to simulate the model. The time spent in this function is the total time required to simulate the model. | System |
| ModelInitialize | Set up the model for simulation. | System |
| ModelExecute | Execute the model by invoking the output, update, integrate, etc., functions for each block at each time step from the start to the end of simulation. | System |
| Output | Compute the outputs of a block at the current time step. | Block |
| Update | Update a block's state at the current time step. | Block |
| Integrate | Compute a block's continuous states by integrating the state derivatives at the current time step. | Block |
| MinorOutput | Compute a block's output at a minor time step. | Block |
| MinorDeriv | Compute a block's state derivatives at a minor time step. | Block |
| MinorZeroCrossings | Compute a block's zero-crossing values at a minor time step. | Block |
| ModelTerminate | Free memory and perform any other end-of-simulation cleanup. | System |
| Nonvirtual Subsystem | Compute the output of a nonvirtual subsystem at the current time step by invoking the output, update, integrate, etc., functions for each block that it contains. The time spent in this function is the time required to execute the nonvirtual subsystem. | Block |
The profiler measures the time required to execute each invocation of these functions and generates a report at the end of the model that describes how much time was spent in each function.
To profile a model, open the model and select Profiler from the Tools menu. Then start the simulation. When the simulation finishes, the Simulink® code generates and displays the simulation profile for the model in the Help browser.
Note Enabling the profiler on a parent model does not enable profiling for referenced models. Profiling must be enabled separately for each submodel. Profiling occurs only if the submodel executes in Normal mode. See Referencing a Model for more information. |
The Simulink software stores the simulation profile in the MATLAB® software working directory.

The report has two sections: a summary and a detailed report.
The summary file displays the following performance totals.
| Item | Description |
|---|---|
Total Recorded Time | Total time required to simulate the model |
Number of Block Methods | Total number of invocations of block-level functions (e.g., Output()) |
Number of Internal Methods | Total number of invocations of system-level functions (e.g., ModelExecute) |
Number of Nonvirtual Subsystem Methods | Total number of invocations of nonvirtual subsystem functions |
Clock Precision | Precision of the profiler's time measurement |
The summary section then shows summary profiles for each function invoked to simulate the model. For each function listed, the summary profile specifies the following information.
| Item | Description |
|---|---|
Name | Name of function. This item is a hyperlink. Clicking it displays a detailed profile of this function. |
Time | Total time spent executing all invocations of this function as an absolute value and as a percentage of the total simulation time |
Calls | Number of times this function was invoked |
Time/Call | Average time required for each invocation of this function, including the time spent in functions invoked by this function |
Self Time | Average time required to execute this function, excluding time spent in functions called by this function |
Location | Specifies the block or model executed for which this function is invoked. This item is a hyperlink. Clicking it highlights the corresponding icon in the model diagram. The link works only if you are viewing the profile in the Help browser. |
This section contains detailed profiles for each function invoked to simulate the model. Each detailed profile contains all the information shown in the summary profile for the function. In addition, the detailed profile displays the function (parent function) that invoked the profiled function and the functions (child functions) invoked by the profiled function. Clicking the name of the parent or a child function takes you to the detailed profile for that function.
![]() | Using the Accelerator Mode with the Simulink® Debugger | Customizing the Simulink® User Interface | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |