Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

探查器如何捕获性能数据

探查器的工作原理

探查器在您的模型进行仿真时捕获性能数据。它能找出模型中需要最多仿真时间的部分。探查信息可用来决定模型优化工作的重点。

注意

您不能在 Rapid Accelerator 模式下使用探查器。

Simulink® 将性能数据存储在仿真探查报告中。数据显示执行模型中的每个函数所花费的时间。

探查器基于一个执行模型来工作,该模型的伪代码如下所示:

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 

根据此概念模型,Simulink 通过调用以下函数零次、一次或多次来运行模型,具体取决于函数和模型。

函数用途级别
sim

对模型进行仿真。此顶层函数调用仿真模型所需的其他函数。在此函数中花费的时间是模型仿真所需的总时间。

系统

ModelInitialize

建立仿真模型。

系统

ModelExecute

在从仿真开始到结束的每个时间步中,通过对每个模块调用 output、update、integrate 等函数来执行模型。

系统

Output

计算模块在当前时间步的输出。

模块

Update

更新模块在当前时间步的状态。

模块

Integrate

通过对当前时间步的状态导数进行积分,计算模块的连续状态。

模块

MinorOutput

计算模块在子时间步的输出。

模块

MinorDeriv

计算模块在子时间步的状态导数。

模块

MinorZeroCrossings

计算模块在子时间步的过零值。

模块

ModelTerminate

释放内存并执行任何其他仿真结束时的清理工作。

系统

Nonvirtual Subsystem

通过对所包含的每个模块调用 output、update、integrate 等函数,计算非虚拟子系统在当前时间步的输出。在此函数中花费的时间是执行该非虚拟子系统所需的时间。

模块

探查器测量执行这些函数的每次调用所需的时间。模型仿真完成后,探查器会生成一份报告,说明在每个函数上花费的仿真时间量。

启动探查器

  1. 打开模型。

  2. Debug 选项卡上,选择 Performance Advisor > Simulink Profiler

  3. 对模型进行仿真。

仿真完成后,Simulink 会在 Simulink 编辑器的面板中为模型生成并显示仿真探查文件。

模块层次结构视图

报告的模块层次结构视图以嵌套树形式显示模型的探查信息。表的第一行(即树的顶部)对应于整个模型。第一层嵌套的后续行对应于模型根级别的模块。

nested hierarchy view

执行堆栈视图

执行堆栈视图按模型的仿真阶段细分探查报告。模型的主要仿真阶段包括编译、初始化、仿真和终止。有关仿真阶段的更详细说明,请参阅动态系统的仿真阶段

保存探查器结果

您可以将探查器报告保存到 mat 文件中。稍后,您可以通过将保存的 mat 文件加载到当前工作区或将其导入现有探查器会话来导入和查看报告。

要保存探查报告,请在 Profile 选项卡的 Share 部分中选择 Export to MAT,并可选择指定 mat 文件的名称。

要在 Simulink Editor 中已打开的探查会话中查看已保存的报告,请在 Profile 选项卡中选择 Import from File

要在命令行中查看保存的报告,请加载包含该报告的 mat 文件。探查信息作为 Simulink.profiler.Data 对象加载到当前工作区。有关详细信息,请参阅Simulink.profiler.Data

相关示例

详细信息