Можно настроить моделирование программного обеспечения в цикле (SIL) или процессора в цикле (PIL) для создания метрик времени выполнения для задач и функций в сгенерированном коде. Программное обеспечение вычисляет время выполнения на основе данных, полученных с помощью инструментальных средств кода, добавленных в приложение SIL или PIL, или генерируемого кода. Можно использовать метрики времени выполнения, чтобы определить, соответствует ли созданный код требованиям для развертывания в реальном времени на целевом оборудовании.
Например, можно выполнить следующий анализ:
Определение задач, требующих наибольшего времени. Задачи являются основными точками входа в созданный код. Например, ступенчатая функция для частоты выборки или функция.model_initialize
В этих задачах исследуйте разделы кода, требующие наибольшего времени.
Определение изменений времени выполнения во временных шагах.
При попытке сократить время выполнения результаты анализа помогают сосредоточиться на наиболее важных разделах кода. Для наблюдения за изменениями производительности обновленной модели повторно запустите моделирование SIL или PIL и сравните новые метрики с предыдущими метриками.
Примечание
Измерения времени выполнения в значительной степени зависят от используемого оборудования. Для получения надежных результатов соберите метрики времени выполнения с помощью оборудования, на котором планируется развернуть сгенерированный код, т.е. выполните моделирование PIL, выполняющее код на целевом оборудовании. Моделирование SIL, выполняющее код на главном компьютере, может не дать репрезентативных показателей.
После завершения моделирования SIL или PIL можно:
Просмотр метрик времени выполнения через окно отображения или отчет.
Используйте инспектор данных моделирования для просмотра и сравнения изменений времени выполнения моделирования.
Проанализируйте измерения в среде MATLAB ®.
Конфигурирование профилирования выполнения кода для моделирования SIL или PIL:
В верхней модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Создание кода (Code Generation) > Проверка (Verification).
Установите флажок Измерить время выполнения задачи.
Для времени выполнения функции в раскрывающемся списке Измерить время выполнения функции выберите одну из следующих опций.
Coarse (referenced models and subsystems only) - если вы хотите проанализировать сгенерированный код функции для компонентов главной модели.
Detailed (all function call sites) - если вы хотите проанализировать сгенерированный код функции для всех блоков в модели.
В поле Переменная рабочей области укажите имя. При выполнении моделирования программа создает переменную с таким именем в базовом рабочем пространстве MATLAB. Переменная содержит измерения времени выполнения и является объектом типа coder.profile.ExecutionTime.
Если установлен флажок Импорт/экспорт данных > Вывод одного моделирования, программа создает переменную в Simulink.SimulationOutput указанный объект.
В раскрывающемся списке Опции сохранения (Save options) выберите одну из следующих опций.
Summary data only - Если требуется создать только отчет и уменьшить использование памяти, например, во время длительного моделирования.
All data - позволяет создавать отчеты и сохранять профили времени выполнения в базовой рабочей области. После моделирования можно использовать методы из coder.profile.ExecutionTime и coder.profile.ExecutionTimeSection классы для извлечения измерений времени выполнения для каждого вызова каждого профилированного раздела кода, который происходит во время моделирования.
При выборе этой опции в окне отображения метрик и созданном отчете отображается значок «Инспектор расчетных данных».
При щелчке на значке программа импортирует результаты моделирования в Инспектор данных моделирования. Затем можно построить график времени выполнения, а также управлять графиками из различных моделей и сравнивать их.
Metrics only - Сокращение использования полосы пропускания для канала связи между Simulink ® и целевым приложением. Во время моделирования программное обеспечение сохраняет на целевом оборудовании максимальное время выполнения, среднее время выполнения и количество вызовов. В конце моделирования Simulink загружает данные с целевого оборудования на компьютер разработки.
Нажмите кнопку ОК.
Для моделирования PIL:
Необходимо настроить аппаратный таймер. При настройке целевого подключения создайте объект таймера. Это действие не требуется для моделирования SIL. Дополнительные сведения см. в разделах Настройка подключения PIL с использованием целевого пакета или Создание конфигурации подключения PIL для Simulink.
Можно удалить накладные расходы КИПиА из времени выполнения. Дополнительные сведения см. в разделе Удаление накладных расходов КИПиА из измерений времени выполнения.
Можно управлять детализацией профилирования времени выполнения, т.е. предотвращать добавление инструментария кода к определенным узлам вызова функций. Управление гранулярностью профилирования позволяет:
Сосредоточьтесь на производительности компонентов модели, требующих улучшения. Например, после начального выполнения отключите профилирование для блоков, для которых требуется мало времени на обработку. Это действие уменьшает количество элементов, отображаемых в отчете по профилированию.
Уменьшите накладные расходы на контрольно-измерительную аппаратуру кода. Например, для простых функций служебные данные инструментария кода могут быть больше времени выполнения кода функции.
Чтобы создать метрики времени выполнения только для задач, на панели «Создание кода» > «Проверка» диалогового окна «Параметры конфигурации» установите флажок «Время выполнения задачи измерения» и установите для параметра «Время выполнения функции измерения» значение Off.
Чтобы создать данные выполнения функций для ссылочных моделей и атомных подсистем в верхней модели, на панели Создание кода (Code Generation) > Проверка (Verification) установите флажок Время выполнения задачи измерения (Measure task execution time) и установите для параметра Время выполнения функции измерения (Measure function time) значение Coarse (referenced models and subsystems only).
Генерация данных выполнения функции требует вставки измерительных зондов в сгенерированный код. Программа вставляет измерительные зонды для атомной подсистемы, только если в поле Function packaging (на вкладке Code Generation диалогового окна Function Block Parameters) установлено значение Nonreusable function или Reusable function. Если в поле установлено значение Auto, то вставка зондов зависит от выбора упаковки, который является результатом Auto установка. Если в поле установлено значение Inline, программное обеспечение не вставляет зонды.
Примечание
В сгенерированном коде программное обеспечение переносит каждый вызов функции с измерительными зондами, за исключением случаев, когда:
Сайт вызова не может быть свернут из-за сворачивания выражения (см. раздел Минимизация вычислений и хранилища для промежуточных результатов на Block Outputs).
Узел вызова находится в общем служебном коде (см. раздел Общий служебный код).
Чтобы создать время выполнения функции для ссылочных иерархий модели:
В верхней части модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Создание кода (Code Generation) > Проверка (Verification).
Установите флажок Измерить время выполнения задачи
Для каждого блока модели, который требуется профилировать, укажите время выполнения функции измерения только на опорном уровне, для которого требуется время выполнения функции.
Например, рассмотрим верхнюю модель, имеющую блок модели A, который, в свою очередь, содержит блок модели B.

Если требуется создать время выполнения для функций из модели B, выберите Измерить время выполнения задачи для верхней модели и укажите время выполнения функции измерения для модели B.
Эти параметры верхней модели переопределяют соответствующие параметры ссылочных моделей:
Измерить время выполнения задачи. При отключении этого параметра для модели верхнего уровня также отключается профилирование функций для ссылочных моделей.
Переменная рабочей области
Параметры сохранения
Для управления профилированием выполнения кода для блока в модели, например блока подсистемы, используйте CodeProfilingOverride параметр блока:
В редакторе Simulink выберите блок.
В окне команд выполните следующее:
set_param(gcb, 'CodeProfilingOverride', blockParameterValue)
blockParameterValue:
'off' - Отключает профилирование для блока.
'on' -- Включает профилирование для блока, если профилирование включено для родительской модели.
'inherit' (по умолчанию) - применяет параметры профилирования родительского блока.
Изменение конфигурации блочного профилирования не приводит к регенерации производственного кода.
Если верхняя модель имеет блок PIL, настройки профилирования выполнения, которые применяются к блоку PIL, являются настройками из исходной модели, которая использовалась для создания блока PIL. См. раздел Моделирование с блоками подсистем. Вы не можете использовать CodeProfilingOverride для управления профилированием для блока PIL.
Время выполнения функции измерения | Измерить время выполнения задачи | Параметры сохранения | Переменная рабочей области