Вы запускаете моделирование программного обеспечения в цикле (SIL) или процессора в цикле (PIL), которое создает метрики времени выполнения для задач и функций в созданном коде. Во время моделирования можно использовать инспектор данных моделирования для наблюдения за временем выполнения потока. В конце моделирования можно выполнить следующие действия:
Просмотр метрик времени выполнения для профилированного компонента модели.
Откройте отчет по метрикам времени выполнения для всех профилированных компонентов. С помощью значков отчета можно просмотреть, например, раздел профилированного кода и распределение времени выполнения для каждой профилированной функции.
Используйте инспектор данных моделирования для печати и сравнения времени выполнения из различных моделей.
Откройте окно rtwdemo_sil_topmodel модель, которая имеет две подсистемы CounterTypeA и CounterTypeB. В командной строке введите rtwdemo_sil_topmodel.
Чтобы запустить моделирование SIL, которое генерирует метрики времени выполнения, на вкладке SIL/PIL:
В разделе Режим (Mode) выберите Только моделирование SIL/PIL (SIL/PIL Simulation Only).
В разделе «Подготовка» задайте следующие параметры:
Тестируемая система - Top model
Режим SIL/PIL - Software-in-the-Loop (SIL)
Чтобы измерить время выполнения кода для подсистем, в разделе Подготовка:
Щелкните Настройки (Settings).
В разделе Профилирование:
Нажмите кнопку Task Profiling на. Это действие выбирает параметр конфигурации Измерить время выполнения задачи, который предоставляет метрики времени выполнения для задачи, созданной из модели верхнего уровня. rtwdemo_sil_topmodel.
Нажимайте кнопку «Сохранить параметры», пока она не отобразится ALL DATA. Это действие устанавливает для параметра конфигурации Сохранить опции значение All data.
Нажимайте кнопку Functions, пока она не отобразится COARSE. Это действие устанавливает параметр конфигурации Measure function execution time в значение Coarse (referenced models and subsystems only), которая предоставляет метрики времени выполнения для функций, генерируемых подсистемами CounterTypeA и CounterTypeB.
В разделе Coverage нажмите кнопку Coverage Collection off, которая отключает анализ покрытия кода. Данные покрытия кода собираются отдельно от данных профилирования.
Нажмите кнопку «Параметры», чтобы открыть диалоговое окно «Параметры конфигурации». На панели Импорт/экспорт данных снимите флажок Отдельные выходные данные моделирования.
Для просмотра времени выполнения потока во время моделирования откройте инспектор данных моделирования. В разделе Результаты (Results) щелкните значок.![]()
В разделе Run (Выполнить) щелкните Run SIL/PIL (Выполнить SIL/PIL).
В базовом рабочем пространстве MATLAB ® при моделировании создается переменная с именем по умолчанию .executionProfile, в котором хранятся данные профилирования выполнения. Альтернативное имя можно указать с помощью параметра конфигурации переменной рабочей области.
Примечание
Если установлен флажок Импорт/экспорт данных > Вывод одного моделирования, при моделировании создается переменная в указанном Simulink.SimulationOutput объект.
По завершении моделирования компоненты профилированной модели окрашиваются в синий цвет, и в представлении «Код» отображается созданный код. Чтобы просмотреть метрики времени выполнения для профилированного компонента, щелкните компонент. Например, подсистема CounterTypeB.

Для моделирования SIL или PIL верхней модели фон Simulink ® Editor также имеет синий цвет. При щелчке фона в окне отображения отображаются метрики времени выполнения для задач верхней модели.
Можно выполнить трассировку от компонента модели к профилированному разделу кода в представлении «Код». В окне отображения профилирования в строке раздела кода щелкните значок.
Например, если щелкнуть фон модели, а затем щелкнуть значок для rtwdemo_sil_topmodel_initialize в приложении SIL отображаются измерительные зонды вокруг узла вызова. Чтобы просмотреть метрики профилирования для компонента, установите курсор на эллипсы над сайтом вызова.

Если щелкнуть значок функции, узел вызова подсвечивается. В ракурсе «Код» отображается среднее время выполнения и количество вызовов функций слева от строки кода. В этом примере максимальное и среднее время совпадают, поскольку функция инициализации была вызвана только один раз.

Окно отображения профилирования также имеет ссылки на:
Полный отчет о профилировании, который предоставляет метрики времени выполнения для всех профилированных разделов кода.
Инспектор данных моделирования (Simulation Data Inspector), который позволяет выводить на график и сравнивать измерения времени выполнения для профилированного раздела кода.
Распределение времени выполнения для профилированного раздела кода.
Круговые диаграммы, показывающие относительное время выполнения вызывающей и вызываемой функций
При закрытии модели или окна отображения можно повторно открыть цветную модель и окно отображения с помощью следующей команды строки:
>> annotate(executionProfile)
В конце моделирования можно открыть этот отчет в окне отображения профилирования или с помощью следующей команды строки:
>> report(executionProfile)

Часть 1 содержит краткое описание. Часть 2 содержит информацию о профилированных разделах кода. Разверните и сверните профилированные сечения в детали 2, нажав [+] и [-] соответственно. На этом рисунке показаны полностью развернутые разделы.

Отчет содержит измерения времени для:
Функция инициализации модели initialize.
Задача, представленная функцией шага step [0.1 0].
Функции, генерируемые подсистемами CounterTypeA и CounterTypeB.
Из отчета профилирования выполнения кода можно отследить компонент модели, который создает набор метрик. Например, в столбце «Сечение» при нажатии кнопки CounterTypeA гиперссылка, Simulink Editor идентифицирует подсистему.

По умолчанию в отчете отображается время в наносекундах (10-9 секунд). Можно указать единицы времени и числовой формат отображения. Например, для отображения времени в микросекундах (10-6 секунд) используйте следующую команду:
report(executionProfile,... 'Units', 'Seconds', ... 'ScaleFactor', '1e-06', ... 'NumericFormat', '%0.3f')
В отчете отображается время в секундах только в том случае, если таймер откалиброван, т.е. известно количество засечек таймера в секунду. На компьютере с ОС Windows ® программное обеспечение определяет это значение для моделирования SIL. На компьютере Linux ® откалибруйте таймер вручную. Например, если тактовая частота процессора составляет 1 ГГц, укажите число отметок таймера в секунду:
executionProfile.TimerTicksPerSecond = 1e9;
Для просмотра метрик времени выполнения задачи или функции в окне команд в соответствующей строке щелкните.![]()
>> out.get('executionProfile').Sections(5)
ExecutionTimeCodeSection with properties:
Name: 'CounterTypeA'
Number: 5
ExecutionTimeInTicks: [1×101 uint64]
SelfTimeInTicks: [1×101 uint64]
TurnaroundTimeInTicks: [1×101 uint64]
TotalExecutionTimeInTicks: 24332
TotalSelfTimeInTicks: 24332
TotalTurnaroundTimeInTicks: 24332
MaximumExecutionTimeInTicks: 502
MaximumExecutionTimeCallNum: 10
MaximumSelfTimeInTicks: 502
MaximumSelfTimeCallNum: 10
MaximumTurnaroundTimeInTicks: 502
MaximumTurnaroundTimeCallNum: 10
NumCalls: 101
ExecutionTimeInSeconds: [1×101 double]
Time: [101×1 double]Чтобы отобразить время выполнения измерений в инспекторе данных моделирования, щелкните значок.
Используйте инспектор данных моделирования для управления и сравнения графиков из различных моделей.
Чтобы отобразить распределение времени выполнения, щелкните значок.![]()

В этом примере для создания гистограммы программное обеспечение использует следующие команды:
section=executionProfile.Sections(5); data=section.ExecutionTimeInSeconds; histogram(data, 30,'Normalization','probability');
Если созданный код для модели содержит вложенные функции, при моделировании создаются круговые диаграммы, показывающие относительное время выполнения вызывающей и вызываемой функций. Чтобы отобразить круговые диаграммы, щелкните значок
функции вызывающего абонента. Например, step [0.1 0].

Круговые диаграммы, отображающие распределение среднего и максимального времени выполнения, могут помочь определить функции, которые являются узкими местами при выполнении кода.
Вернитесь к сводке в отчете. В следующей таблице приводится информация, представленная в профилях разделов кода.
| Колонка | Описание |
|---|---|
| Раздел | Имя задачи, верхней модели, подсистемы или блока модели. Щелкните ссылку, чтобы перейти к модели. При выполнении задачи период выборки и смещение пробы перечисляются рядом с именем задачи. Например, |
| Максимальное время обращения (Simulink Real-Time™ и пакеты поддержки в режиме реального времени) | Наибольшее время между началом и концом раздела кода. Включает время вытеснения. |
| Среднее время обращения (пакеты Simulink Real-Time и поддержки в режиме реального времени) | Среднее время между началом и концом раздела кода. Включает время вытеснения. |
| Максимальное время выполнения | Наибольшее время между началом и концом раздела кода. |
| Среднее время выполнения | Среднее время между началом и концом раздела кода. |
| Максимальное время самообслуживания | Максимальное время выполнения, исключая время в дочерних разделах. |
| Среднее время самообслуживания | Среднее время выполнения, исключая время в дочерних разделах. |
| Требования | Количество вызовов раздела кода. |
Щелкните значок, чтобы увидеть профилированный раздел кода в представлении «Код» приложения SIL/PIL. Раздел кода может быть задачей или функцией. Указанная переменная рабочей области, например, | |
Щелкните значок, чтобы отобразить раздел профилированного кода в окне команд. Эквивалентно выполнению команды Указанная переменная рабочей области, например, | |
Щелкните значок, чтобы отобразить время выполнения измерений с помощью инспектора данных моделирования. Указанная переменная рабочей области, например, | |
Щелкните значок, чтобы просмотреть распределение времени выполнения для раздела профилированного кода. Указанная переменная рабочей области, например, | |
Щелкните значок, чтобы отобразить круговые диаграммы, показывающие относительное время выполнения вызывающей и вызываемой функций в сгенерированном коде. |
Чтобы решить, можно ли запустить сгенерированный код на целевом оборудовании, в части 3 отчета о профилировании выполнения кода содержится информация о рабочей нагрузке ЦП:
Среднее и максимальное время ЦП, необходимое каждой задаче в течение периода выборки.
Общая загрузка ЦП за период выборки.
Программа вычисляет процент времени ЦП, назначенного задаче, путем деления времени выполнения задачи на время выборки.

Программное обеспечение генерирует загрузку ЦП только в том случае, если указано количество отметок таймера в секунду.
Можно создать отчет о профилировании выполнения кода, который сравнивает производительность созданного кода с производительностью ссылочной версии. Например, предположим, что необходимо использовать текущие метрики времени выполнения в executionProfile в качестве базовой линии для rtwdemo_sil_topmodel.
В браузере рабочего пространства переименовать executionProfile кому executionProfileBaseline.
Запустите другое моделирование SIL.
Чтобы создать отчет, сравнивающий последнюю производительность с базовой структурой, в окне команд выполните следующие действия.
report(executionProfile,'baseline', executionProfileBaseline)В части 3 (Сравнение с базовой производительностью) и части 4 (Загрузка ЦП) отчет содержит сравнение метрик времени выполнения. Различия в метриках времени выполнения кодируются цветом:
Красный - увеличение времени выполнения или загрузки ЦП.
Зеленый - уменьшение времени выполнения или загрузки ЦП.
Черный - без изменений.

Инспектор данных моделирования можно использовать для визуализации планирования задач и порядка вызовов функций. В конце моделирования выполните одно из следующих действий:
Запустить schedule функция. Дополнительные сведения см. в разделе Визуализация планирования задач
На вкладке SIL/PIL в коллекции результатов щелкните Создать расписание. Дополнительные сведения см. в разделе Анализ результатов и экспорт тестовых примеров.