文档

查看和比较代码执行时间

您可以运行一个在循环中的软件(SIL)或在循环中的处理器(PIL)模拟,在生成的代码中生成任务和函数的执行时间度量。在模拟期间,您可以使用simulation Data Inspector来观察流执行时间。在模拟的最后,你可以:

  • 查看被概要分析的模型组件的执行时度量。

  • 为所有分布式组件打开执行时间指标的报告。通过报告图标,您可以查看,例如,对每个分析功能的分布式代码部分和执行时间分发。

  • 使用模拟数据检查器来绘制和比较不同模拟的执行时间。

打开rtwdemo_sil_topmodel模型,它有两个子系统CounterTypeACounterTypeB

要运行生成执行时指标的SIL模拟,请在SIL / PIL.标签:

  1. 模式部分中,选择银/公益诉讼模拟

  2. 准备部分,指定这些设置:

    1. 被测系统- - - - - -顶级模特

    2. 银/公益诉讼模式- - - - - -软件循环(SIL)

  3. 要测量子系统的代码执行时间:

    1. 点击

    2. 在“配置参数”对话框中,选择测量任务执行时间,它为从顶层模型生成的任务提供了执行时度量rtwdemo_sil_topmodel

    3. 测量函数执行时间粗糙(仅参考模型和子系统),它为子系统生成的函数提供了执行时度量CounterTypeACounterTypeB

    4. 指定一个工作空间变量, 例如,executionProfile

    5. 保存选项下拉列表中,选择所有的数据

    6. 点击好的

  4. 点击设置.下报道,单击覆盖集合按钮。

  5. 运行部分中,点击运行银/公益诉讼

模拟生成变量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]

  • 由子系统生成的函数CounterTypeACounterTypeB

您可以在“代码生成报告”的“生成代码”视图中转到已分析代码部分。在代码执行分析报告中,在代码段行上,单击图标.例如,如果单击图标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岁的直方图(数据“归一化”“概率”);
只有当呼叫数大于1时,该软件才会创建直方图。

请注意

要观察代码段如何在执行时间轴上被调用,请使用时间轴函数。

下表介绍了代码部分配置文件中提供的信息。

柱子 描述
部分

任务名称、顶级模型、子系统或模型块。单击链接以转到模型。

对于任务,样本周期和样本偏移量列在任务名称的旁边。例如,0.1 rtwdemo_sil_topmodel_step [0]采样周期为0.1秒,采样偏移量为0。

最大周转时间(金宝app仿真软件实时™以及实时金宝app模式下的支持包) 代码段开始和结束之间的最长时间。包括抢占时间。
平均周转时间(金宝app实时仿真软件以及实时金宝app模式下的支持包) 代码段开始和结束之间的平均时间。包括抢占时间。
最大执行时间 代码段开始和结束之间的最长时间。
平均执行时间 代码段开始和结束之间的平均时间。
最大的自我时间 最大执行时间,在子部分中排除时间。
平均自动时间 平均执行时间,不包括子节的时间。
调用 对代码段的调用数。

单击该图标可在“代码生成报告”的“生成代码”视图中查看已分析的代码部分。代码段可以是任务,也可以是函数。

指定的工作区变量,例如,executionProfile,必须出现在基本工作空间中。

单击该图标可在命令窗口中显示已分析的代码部分。相当于执行命令executionProfile。部分(

指定的工作区变量,例如,executionProfile,必须出现在基本工作空间中。

单击该图标可显示模拟数据检查器测量的执行时间。

指定的工作区变量,例如,executionProfile,必须出现在基本工作空间中。

图标,单击该图标可显示已分析代码部分的执行时分布。

指定的工作区变量,例如,executionProfile,必须出现在基本工作空间中。

为了帮助您决定是否可以在目标硬件上运行生成的代码,代码执行分析报告的第3部分提供了CPU工作负载信息:

  • 在一个样本周期内,每个任务所需的平均和最大CPU时间。

  • 一个采样周期内的总CPU占用率。

该软件通过采样时间除以任务执行时间来计算分配给任务的CPU时间的百分比。

软件生成CPU利用率仅当指定了每秒计时器滴答数时。

比较基线的代码执行时间性能

您可以创建一个代码执行分析报告,将生成的代码的性能与参考版本的性能进行比较。例如,假设您想要使用executionProfile作为rtwdemo_sil_topmodel

  1. 在Workspace浏览器中,重命名executionProfileexecutionProfileBaseline

  2. 运行另一个SIL模拟。

  3. 要创建一个报告,将最新性能与基线进行比较,请在命令窗口中运行:

    报告(executionProfile,“基线”executionProfileBaseline)

在第三部份(与基线性能的比较)及第四部份(CPU利用率),该报告提供了执行时指标的比较。执行时间指标的差异是用颜色编码的:

  • 红色-执行时间或CPU使用率的增加。

  • 绿色-减少执行时间或CPU占用率。

  • 黑色 - 没有变化。

另请参阅

|

相关的例子

更多关于