После SIL или PIL симуляции, можно анализировать методы использования данных времени выполнения от классов coder.profile.ExecutionTimeSection и coder.profile.ExecutionTime.
Открытый rtwdemo_sil_topmodel.
На Configuration Parameters> Code Generation> панель Verification, задайте профильные опции:
Установите флажок Measure task execution time.
Задайте Workspace variable, например, myExecutionProfile.
От Save options выпадающий список выберите All data.
Запустите SIL симуляцию.
Программное обеспечение генерирует переменную myExecutionProfile рабочей области, объект coder.profile.ExecutionTime.
Чтобы получить общее количество секций кода, которые имеют профильные данные, используйте метод Sections.
>> 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 для профилируемой секции кода, используйте метод 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]
Используйте методы coder.profile.ExecutionTimeSection, чтобы извлечь профильную информацию для конкретной секции кода. Например, используйте Name, чтобы получить имя профилируемой задачи.
>> name_of_section = SecondSectionProfile.Name name_of_section = rtwdemo_sil_topmodel_step [0.1 0]
Если таймер не калибруется, и вы знаете уровень таймера, например, 2,2 ГГц, можно использовать метод coder.profile.ExecutionTime TimerTicksPerSecond, чтобы калибровать таймер:
>> myExecutionProfile.TimerTicksPerSecond = 2.2e9; >> SecondSectionProfile = myExecutionProfile.Sections(2);