分析代码执行数据
在软件在环 (SIL)、处理器在环 (PIL) 或基于 XCP 的外部模式仿真之后,您可以使用 coder.profile.ExecutionTime 和 coder.profile.ExecutionTimeSection 类中的方法来分析执行时间数据。
打开模型
SILTopModel。openExample('ecoder/SILPILVerificationExample', ... supportingFile='SILTopModel.slx')
在模式部分中,选择仅 SIL/PIL 仿真。
在设置库中,指定启用分析的选项:
在 SIL/PIL 设置下,点击可移植字长。
在时间探查下,点击任务探查开启,点击保存选项至所有数据,然后点击函数关闭。
在覆盖率下,点击覆盖率收集关闭。
在运行部分中,点击运行 SIL/PIL。
软件生成出来了,一个 Simulink.SimulationOutput 对象,里面包含 executionProfile,一个 coder.profile.ExecutionTime 对象。
要获取具有分析数据的代码段总数,请使用 Sections 方法:
no_of_Sections = out.executionProfile.Sections
no_of_Sections =
1×2 ExecutionTimeTaskSection array with properties:
Name
Number
ExecutionTimeInTicks
SelfTimeInTicks
TurnaroundTimeInTicks
TotalExecutionTimeInTicks
TotalSelfTimeInTicks
TotalTurnaroundTimeInTicks
MaximumExecutionTimeInTicks
MaximumExecutionTimeCallNum
MaximumSelfTimeInTicks
MaximumSelfTimeCallNum
MaximumTurnaroundTimeInTicks
MaximumTurnaroundTimeCallNum
NumCalls
ExecutionTimeInSeconds
Timecoder.profile.ExecutionTimeSection 对象,请使用方法 Sections。FirstSectionProfile = out.executionProfile.Sections(1) SecondSectionProfile = out.executionProfile.Sections(2)
FirstSectionProfile =
ExecutionTimeTaskSection with properties:
Name: 'initialize'
Number: 1
ExecutionTimeInTicks: 154
SelfTimeInTicks: 154
TurnaroundTimeInTicks: 154
TotalExecutionTimeInTicks: 154
TotalSelfTimeInTicks: 154
TotalTurnaroundTimeInTicks: 154
MaximumExecutionTimeInTicks: 154
MaximumExecutionTimeCallNum: 1
MaximumSelfTimeInTicks: 154
MaximumSelfTimeCallNum: 1
MaximumTurnaroundTimeInTicks: 154
MaximumTurnaroundTimeCallNum: 1
NumCalls: 1
ExecutionTimeInSeconds: 4.2778e-08
Time: 0
SecondSectionProfile =
ExecutionTimeTaskSection with properties:
Name: 'step [0.1 0]'
Number: 2
ExecutionTimeInTicks: [262 216 176 174 174 174 178 172 … ]
SelfTimeInTicks: [262 216 176 174 174 174 178 172 … ]
TurnaroundTimeInTicks: [262 216 176 174 174 174 178 172 … ]
TotalExecutionTimeInTicks: 22366
TotalSelfTimeInTicks: 22366
TotalTurnaroundTimeInTicks: 22366
MaximumExecutionTimeInTicks: 748
MaximumExecutionTimeCallNum: 68
MaximumSelfTimeInTicks: 748
MaximumSelfTimeCallNum: 68
MaximumTurnaroundTimeInTicks: 748
MaximumTurnaroundTimeCallNum: 68
NumCalls: 101
ExecutionTimeInSeconds: [7.2778e-08 6.0000e-08 4.8889e-08 4.8333e-08 … ]
Time: [101×1 double]使用 coder.profile.ExecutionTimeSection 方法提取特定代码段的分析信息。例如,使用 Name 获取分析任务的名称。
name_of_section = SecondSectionProfile.Name
name_of_section =
'step [0.1 0]'如果计时器未校准,并且您知道计时器速率,例如 2.2 GHz,则可以使用 coder.profile.ExecutionTime 方法 TimerTicksPerSecond 来校准计时器。
out.executionProfile.TimerTicksPerSecond = 2.2e9; SecondSectionProfile = out.executionProfile.Sections(2);