Capturing Performance Data

What Is the Profiler?

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.

Performance data showing the time spent executing each function in your model is placed in a report called the simulation profile.

How the Profiler Works

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.

FunctionPurposeLevel
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.

Enabling the Profiler

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.

Simulation Profile

The Simulink software stores the simulation profile in the MATLAB® software working directory.

The report has two sections: a summary and a detailed report.

Summary Section

The summary file displays the following performance totals.

ItemDescription

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.

ItemDescription

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.

Detailed Profile Section

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.

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS