您可以运行一个在循环中的软件(SIL)或在循环中的处理器(PIL)模拟,在生成的代码中生成任务和函数的执行时间度量。在模拟期间,您可以使用simulation Data Inspector来观察流执行时间。在模拟的最后,你可以:
查看被概要分析的模型组件的执行时度量。
为所有分布式组件打开执行时间指标的报告。通过报告图标,您可以查看,例如,对每个分析功能的分布式代码部分和执行时间分发。
使用模拟数据检查器来绘制和比较不同模拟的执行时间。
打开rtwdemo_sil_topmodel
模型,它有两个子系统CounterTypeA
和CounterTypeB
.
要运行生成执行时指标的SIL模拟,请在SIL / PIL.标签:
在模式部分中,选择银/公益诉讼模拟.
在准备部分,指定这些设置:
被测系统- - - - - -顶级模特
银/公益诉讼模式- - - - - -软件循环(SIL)
要测量子系统的代码执行时间:
点击.
在“配置参数”对话框中,选择测量任务执行时间,它为从顶层模型生成的任务提供了执行时度量rtwdemo_sil_topmodel
.
集测量函数执行时间来粗糙(仅参考模型和子系统)
,它为子系统生成的函数提供了执行时度量CounterTypeA
和CounterTypeB
.
指定一个工作空间变量, 例如,executionProfile
.
从保存选项下拉列表中,选择所有的数据
.
点击好的.
点击设置.下报道,单击覆盖集合按钮。
在运行部分中,点击运行银/公益诉讼.
模拟生成变量executionProfile
在matlab.®基本工作空间。
如果你选择数据导入/导出>单一的模拟输出复选框时,模拟将在指定的变量中创建金宝app仿真软件。SimulationOutput
目的。
要在仿真期间查看流的执行时间,请打开“模拟数据”检查器。在结果部分中,点击.
当仿真完成时,被分析的模型组件是蓝色的。要查看已分析组件的执行时间度量,请单击该组件。例如,子系统CounterTypeB
.
显示窗口也有链接到:
完整的分析报告,它为所有被分析的代码部分提供了执行时度量。
代码生成报告中的分布式代码部分。
仿真数据检查器,它允许您绘制和比较概要代码部分的执行时间度量。
概要代码部分的执行时分布。
对于顶级模型SIL或PIL模拟,Simulink金宝app®编辑器的背景也是蓝色的。当您单击后台时,显示窗口将显示顶层任务的执行时间指标。
如果您关闭模型或显示窗口,您可以使用以下行命令重新打开彩色模型和显示窗口:
> >注释(executionProfile)
在模拟结束时,您可以通过度量显示窗口或使用下面的行命令打开该报告:
> >报告(executionProfile)
第1部分提供了摘要。第2部分包含有关分析代码部分的信息。点击[+]和[ - ]分别在第2部分中展开和折叠分布的部分。此图形显示完全扩展的部分。
该报告包含以下时间度量:
模型初始化函数RTWDEMO_SIL_TOPMODEL_INITIALIZE.
.
由阶跃函数表示的一种任务0.1 rtwdemo_sil_topmodel_step [0]
.
由子系统生成的函数CounterTypeA
和CounterTypeB
.
您可以在“代码生成报告”的“生成代码”视图中转到已分析代码部分。在代码执行分析报告中,在代码段行上,单击图标.例如,如果单击图标
RTWDEMO_SIL_TOPMODEL_INITIALIZE.
任务中,您可以看到SIL应用程序中调用站点周围的度量探测。
如果单击某个函数的图标,则呼叫站点将高亮显示。
从代码执行概要分析报告中,您可以跟踪生成一组度量的模型组件。例如,在部分列,如果单击CounterTypeA
超链接时,Simulink编辑金宝app器标识子系统。
默认情况下,报告以纳秒(10)为单位显示时间-9秒)。您可以指定时间单位和数字显示格式。例如,以微秒(10-6),使用以下命令:
报告(executionProfile,...'单位',“秒”,...“ScaleFactor”,“1 e-06”,...“NumericFormat”,'%0.3f')
只有当计时器经过校准(即已知每秒计时器滴答数)时,报表才会以秒为单位显示时间。在Windows®机器时,软件为SIL模拟确定此值。在Linux®机器,手动校准定时器。例如,如果您的处理器速度为1 GHz,请指定每秒计时器滴答数:
executionProfile。TimerTicksPerSecond = 1 e9;
若要在“命令窗口”中查看任务或函数的执行时间指标,请单击对应行的.
> > executionProfile.Sections (5) ExecutionTimeCodeSection属性:名称:“CounterTypeA”数量:5 ExecutionTimeInTicks:[1×101 uint64] SelfTimeInTicks:[1×101 uint64] TurnaroundTimeInTicks:[1×101 uint64] TotalExecutionTimeInTicks: 12998 TotalSelfTimeInTicks: 12998 TotalTurnaroundTimeInTicks: 12998 MaximumExecutionTimeInTicks:374 MaximumExecutionTimeCallNum: 60 MaximumSelfTimeInTicks: 374 MaximumSelfTimeCallNum: 60 MaximumTurnaroundTimeInTicks: 374 MaximumTurnaroundTimeCallNum: 60 NumCalls: 101 ExecutionTimeInSeconds: [1×101 double] Time: [101×1 double]
要在仿真数据检查器中显示测量的执行时间,单击该图标.使用模拟数据检查器来管理和比较来自各种模拟的图。
要显示执行时间分布,单击图标.
在本例中,要创建直方图,软件使用以下命令:
节= executionProfile.Sections (5);数据= section.ExecutionTimeInSeconds;30岁的直方图(数据“归一化”,“概率”);
要观察代码段如何在执行时间轴上被调用,请使用时间轴
函数。
下表介绍了代码部分配置文件中提供的信息。
柱子 | 描述 |
---|---|
部分 | 任务名称、顶级模型、子系统或模型块。单击链接以转到模型。 对于任务,样本周期和样本偏移量列在任务名称的旁边。例如, |
最大周转时间(金宝app仿真软件实时™以及实时金宝app模式下的支持包) | 代码段开始和结束之间的最长时间。包括抢占时间。 |
平均周转时间(金宝app实时仿真软件以及实时金宝app模式下的支持包) | 代码段开始和结束之间的平均时间。包括抢占时间。 |
最大执行时间 | 代码段开始和结束之间的最长时间。 |
平均执行时间 | 代码段开始和结束之间的平均时间。 |
最大的自我时间 | 最大执行时间,在子部分中排除时间。 |
平均自动时间 | 平均执行时间,不包括子节的时间。 |
调用 | 对代码段的调用数。 |
![]() |
单击该图标可在“代码生成报告”的“生成代码”视图中查看已分析的代码部分。代码段可以是任务,也可以是函数。 指定的工作区变量,例如, |
![]() |
单击该图标可在命令窗口中显示已分析的代码部分。相当于执行命令 指定的工作区变量,例如, |
![]() |
单击该图标可显示模拟数据检查器测量的执行时间。 指定的工作区变量,例如, |
![]() |
图标,单击该图标可显示已分析代码部分的执行时分布。 指定的工作区变量,例如, |
为了帮助您决定是否可以在目标硬件上运行生成的代码,代码执行分析报告的第3部分提供了CPU工作负载信息:
在一个样本周期内,每个任务所需的平均和最大CPU时间。
一个采样周期内的总CPU占用率。
该软件通过采样时间除以任务执行时间来计算分配给任务的CPU时间的百分比。
软件生成CPU利用率仅当指定了每秒计时器滴答数时。
您可以创建一个代码执行分析报告,将生成的代码的性能与参考版本的性能进行比较。例如,假设您想要使用executionProfile
作为rtwdemo_sil_topmodel
.
在Workspace浏览器中,重命名executionProfile
来executionProfileBaseline
.
运行另一个SIL模拟。
要创建一个报告,将最新性能与基线进行比较,请在命令窗口中运行:
报告(executionProfile,“基线”executionProfileBaseline)
在第三部份(与基线性能的比较)及第四部份(CPU利用率),该报告提供了执行时指标的比较。执行时间指标的差异是用颜色编码的:
红色-执行时间或CPU使用率的增加。
绿色-减少执行时间或CPU占用率。
黑色 - 没有变化。