После моделирования SIL или PIL можно проанализировать данные времени выполнения с помощью методов из coder.profile.ExecutionTime и coder.profile.ExecutionTimeSection классы.
Открытый rtwdemo_sil_topmodel.
На панели «Параметры конфигурации» > «Создание кода» > «Проверка» укажите параметры профилирования:
Установите флажок Измерить время выполнения задачи.
Укажите переменную рабочей области, например: myExecutionProfile.
В раскрывающемся списке «Параметры сохранения» выберите 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);