Можно сконфигурировать симуляцию цикл (SIL) или цикл (PIL), чтобы получить метрики времени выполнения для задач и функций в сгенерированном коде. Программа вычисляет времена выполнения из данных, которые получаются посредством отладок кода, добавленных в приложение SIL или PIL или сгенерированный тестируемый код. Можно использовать метрики времени выполнения, чтобы определить, соответствует ли сгенерированный код требованиям для развертывания приложений на целевом компьютере.
Для примера можно выполнить следующий анализ:
Идентифицируйте задачи, которые требуют наибольшего времени. Задачи являются основными точками входа в сгенерированный код. Для примера, функция шага для частоты дискретизации или
функция.model
_initialize
В этих задачах исследуйте секции кода, которые требуют наибольшего времени.
Идентифицируйте изменения во времени выполнения по временным шагам.
Если вы пытаетесь уменьшить времена выполнения, результаты анализа помогают вам сосредоточиться на наиболее важнейшие секции кода. Чтобы наблюдать изменения эффективности для обновленной модели, перезапустите симуляцию SIL или PIL и сравните новые метрики с предыдущими метриками.
Примечание
Измерения во время выполнения сильно зависят от используемого оборудования. Для достоверных результатов соберите метрики времени выполнения с помощью оборудования, на котором вы планируете развернуть сгенерированный код, то есть запуск PIL симуляций, которые выполняют код на вашем целевом компьютере. SIL симуляции, которые выполняют код на вашем хосте-компьютере, могут не выдать репрезентативные метрики.
Когда симуляция SIL или PIL завершена, можно:
Просмотрите метрики во время выполнения через окно отображения или отчет.
Используйте Данные моделирования Inspector, чтобы просмотреть и сравнить вариации времен выполнения по симуляции.
Анализируйте измерения в MATLAB® окружение.
Чтобы сконфигурировать профилирование выполнения кода для SIL или PIL симуляции:
В модели верхней части откройте диалоговое окно Параметры конфигурации и выберите панель Code Generation > Verification.
Установите флажок Measure task execution time.
Для времен выполнения функции в выпадающем списке Measure function execution times выберите одну из следующих опций:
Coarse (referenced models and subsystems only)
- если вы хотите проанализировать сгенерированный код функции для основных компонентов модели.
Detailed (all function call sites)
- если вы хотите проанализировать сгенерированный код функции для всех блоков в модели.
В поле Workspace variable укажите имя. Когда вы запускаете симуляцию, программное обеспечение генерирует переменную с этим именем в базовом рабочем пространстве MATLAB. Переменная содержит измерения во время выполнения и является объектом типа coder.profile.ExecutionTime
.
Если установлен флажок Data Import/Export > Single simulation output, программа создает переменную в Simulink.SimulationOutput
заданный объект.
В раскрывающемся списке Save options выберите одну из следующих опций:
Summary data only
- Если вы хотите сгенерировать только отчет и уменьшить использование памяти, например, во время долгой симуляции.
All data
- Позволяет вам сгенерировать отчет и хранить профили времени выполнения в базовом рабочем пространстве. После симуляции можно использовать методы из coder.profile.ExecutionTime
и coder.profile.ExecutionTimeSection
классы для извлечения измерений во время выполнения для каждого вызова к каждому профилированному разделу кода, который происходит во время симуляции.
При выборе этой опции в окне отображения метриков и сгенерированного отчета отображается значок Simulation Data Inspector. При нажатии значка программа импортирует результаты симуляции в Данные моделирования Inspector. Затем можно построить времена выполнения и управлять и сравнивать графики из различных симуляций.
Metrics only
-- Уменьшает использование полосы пропускания для канала связи между Simulink® и целевое приложение. Во время симуляции программное обеспечение сохраняет на целевом компьютере максимальные времена выполнения, средние времена выполнения и количество вызовов. В конце симуляции Simulink загружает данные с целевого компьютера на ваш компьютер разработчика.
Нажмите OK.
Для PIL симуляции:
Необходимо настроить аппаратный таймер. Когда вы настраиваете целевое подключение, создайте объект-таймер. Это действие не требуется для SIL симуляции. Для получения дополнительной информации смотрите Настроить подключение PIL при помощи целевого пакета или Создать строение подключения PIL для Simulink.
Можно удалить накладные расходы на инструментирование из времен выполнения. Для получения дополнительной информации смотрите Удаление перегрузок Инструментирования из измерений во время выполнения.
Можно контролировать гранулярность профилирования во время выполнения, то есть предотвратить сложение отладки кода к конкретным сайтам вызова функции. Посредством управления зернистостью профилирования можно:
Особое внимание на эффективности компонентов модели, которые требуют улучшения. Например, после начального запуска отключите профилирование для блоков, которые требуют небольшого времени вычислений. Это действие уменьшает количество элементов, отображаемых в отчете о профилировании.
Уменьшите накладные расходы на отладку кода. Для примера для простых функций накладные расходы на отладку кода могут быть больше, чем время выполнения кода функции.
Чтобы сгенерировать метрики времени выполнения только для задач, на панели Code Generation > Verification диалогового окна Configuration Parameters установите флажок Measure task execution time и установите для Measure function execution times значение Off
.
Произвести данные выполнения функции для моделей, на которые ссылаются, и атомарных подсистем в топ-модели, на флажке <reservedrangesplaceholder4>> <reservedrangesplaceholder3> pane, select the <reservedrangesplaceholder2> и установить Measure function execution times в Coarse (referenced models and subsystems only)
.
Генерация данных выполнения функции требует вставки измерения зондов в сгенерированный код. Программа вставляет измерение зонды для атомарной подсистемы, только если задать для поля Function packaging (на вкладке Code Generation диалогового окна Function Параметров блоков) значение Nonreusable function
или Reusable function
. Если для поля задано значение Auto
, тогда вставка зондов зависит от упаковочного выбора, который является результатом Auto
настройка. Если для поля задано значение Inline
программное обеспечение не вставляет зонды.
Примечание
В сгенерированном коде программное обеспечение оборачивает каждый вызов функции датчиками измерения, кроме тех случаев, когда:
Сайт вызова не может быть упакован из-за складывания выражения (см. «Минимизация расчетов и хранилище для промежуточных результатов на выходах блоков»).
Узел вызова расположен в общем коде утилиты (см. Раздел «Код утилиты совместного использования»).
Чтобы сгенерировать времена выполнения функций для иерархий модели-ссылки:
В верхней модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Code Generation > Verification.
Установите флажок Measure task execution time
Для каждого блока Model, который вы хотите профилировать, задайте Measure function execution times только на ссылку уровне, для которого вам требуется времена выполнения функции.
Например, рассмотрим верхнюю часть, которая имеет Model блок A, который, в свою очередь, содержит Model блок B.
Если вы хотите сгенерировать времена выполнения для функций из модели B, выберите Measure task execution time для верхней модели и задайте Measure function execution times для модели B.
Эти параметры верхней модели переопределяют соответствующие параметры ссылочных моделей:
Measure task execution time. Если вы отключаете этот параметр для верхней части, вы также отключаете профилирование функции для моделей-ссылок.
Workspace variable
Save options
Чтобы код системы управления профилирование выполнения для блока в модели, для примера, блока подсистемы, используйте CodeProfilingOverride
Параметры блоков:
В редакторе Simulink выберите блок.
В Командном окне выполните команду:
set_param(gcb, 'CodeProfilingOverride', blockParameterValue)
blockParameterValue
:
'off'
-- Отключает профилирование для блока.
'on'
-- Включает профилирование для блока, если включено профилирование для родительской модели.
'inherit'
(по умолчанию) -- Применяет настройки профилирования родительского блока.
Изменение строения профилирования блоков не вызывает регенерации производственного кода.
Если ваша верхняя часть имеет блок PIL, настройки профилирования выполнения, применяемые к блоку PIL, являются настройками из исходной модели, которые вы использовали для создания блока PIL. См. Симуляцию с блоками Subsystem. Вы не можете использовать CodeProfilingOverride
для управления профилированием для блока PIL.
Измерьте времена выполнения функции | Измерьте время выполнения задачи | Сохраните опции | Переменная рабочей области