After a SIL or PIL simulation, you can analyze execution-time
data using methods from the coder.profile.ExecutionTime
and coder.profile.ExecutionTimeSection
classes.
Open rtwdemo_sil_topmodel
.
On the Configuration Parameters > Code Generation > Verification pane, specify profiling options:
Select the Measure task execution time check box.
Specify a Workspace variable,
for example, myExecutionProfile
.
From the Save options drop-down
list, select All data
.
Run a SIL simulation.
The software generates the workspace variable myExecutionProfile
,
an coder.profile.ExecutionTime
object.
To get the total number of code sections that have profiling
data, use the Sections
method.
>> no_of_Sections = myExecutionProfile.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 Time
coder.profile.ExecutionTimeSection
object
for a profiled code section, use the method Sections
.>> FirstSectionProfile = myExecutionProfile.Sections(1) SecondSectionProfile = myExecutionProfile.Sections(2) FirstSectionProfile = ExecutionTimeTaskSection with properties: Name: 'rtwdemo_sil_topmodel_initialize' Number: 1 ExecutionTimeInTicks: 1188 SelfTimeInTicks: 1188 TurnaroundTimeInTicks: 1188 TotalExecutionTimeInTicks: 1188 TotalSelfTimeInTicks: 1188 TotalTurnaroundTimeInTicks: 1188 MaximumExecutionTimeInTicks: 1188 MaximumExecutionTimeCallNum: 1 MaximumSelfTimeInTicks: 1188 MaximumSelfTimeCallNum: 1 MaximumTurnaroundTimeInTicks: 1188 MaximumTurnaroundTimeCallNum: 1 NumCalls: 1 ExecutionTimeInSeconds: 5.4000e-07 Time: 0 SecondSectionProfile = ExecutionTimeTaskSection with properties: Name: 'rtwdemo_sil_topmodel_step [0.1 0]' Number: 2 ExecutionTimeInTicks: [1×101 uint64] SelfTimeInTicks: [1×101 uint64] TurnaroundTimeInTicks: [1×101 uint64] TotalExecutionTimeInTicks: 70316 TotalSelfTimeInTicks: 70316 TotalTurnaroundTimeInTicks: 70316 MaximumExecutionTimeInTicks: 2448 MaximumExecutionTimeCallNum: 2 MaximumSelfTimeInTicks: 2448 MaximumSelfTimeCallNum: 2 MaximumTurnaroundTimeInTicks: 2448 MaximumTurnaroundTimeCallNum: 2 NumCalls: 101 ExecutionTimeInSeconds: [1×101 double] Time: [101×1 double]
Use coder.profile.ExecutionTimeSection
methods
to extract profiling information for a particular code section. For
example, use Name
to obtain
the name of a profiled task.
>> name_of_section = SecondSectionProfile.Name name_of_section = rtwdemo_sil_topmodel_step [0.1 0]
If the timer is uncalibrated and you know the timer rate, for
example 2.2 GHz, you can use the coder.profile.ExecutionTime
method TimerTicksPerSecond
to calibrate the
timer:
>> myExecutionProfile.TimerTicksPerSecond = 2.2e9; >> SecondSectionProfile = myExecutionProfile.Sections(2);