После SIL или PIL симуляции можно анализировать данные во время выполнения с помощью методов из coder.profile.ExecutionTime и coder.profile.ExecutionTimeSection классы.
Откройте rtwdemo_sil_topmodel.
На панели Configuration Parameters Code Generation > Verification > задайте опции профилирования:
Установите флажок Measure task execution time.
Задайте Workspace variable, например myExecutionProfile.
В раскрывающемся списке Save options выберите All data.
Запустите SIL симуляцию.
Программа генерирует переменную рабочей области myExecutionProfile, an 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);