Путем профилирования скорости выполнения сгенерированного кода можно помочь проверить, что код удовлетворяет требования скорости выполнения.
Профилирование может быть особенно важным рано в цикле разработки для идентификации потенциальных архитектурных проблем, которые могут быть более дорогими, чтобы обратиться позже в процессе. Профилирование может также идентифицировать узкие места и процедурные проблемы, которые указывают на потребность в оптимизации, например, с внутренним циклом или встроенным кодом.
Если у вас есть лицензия Embedded Coder®, смотрите, что Выполнение кода Профилирует (Embedded Coder) для альтернативного и более простого подхода на основе программного обеспечения в цикле (SIL) или процессоре в цикле (PIL) симуляции.
Можно профилировать код, сгенерированный с технологией генерации кода при помощи интерфейса функции рычага Компилятора выходного языка (TLC).
Чтобы использовать профиль сцепляют функциональный интерфейс:
Для вашего системного конечного файла создайте файл TLC, который задает следующие функции рычага. Запишите функции так, чтобы они задали профильный код. Генератор кода добавляет код функции рычага в код, сгенерированный для атомарных систем в модели.
Функция | Входные параметры | 'OutputType' | Описание |
---|---|---|---|
ProfilerHeaders | void | Массив имен заголовочного файла | Возвратите массив имен заголовочного файла, которые будут включены в сгенерированный код. |
ProfilerTypedefs | void | typedefs | Сгенерируйте операторы кода для определений типа профилировщика. |
ProfilerGlobalData | system | Глобальные данные для заданного system | Сгенерируйте операторы кода, которые объявляют глобальные данные. |
ProfilerExternDataDecls | system | Объявления extern для заданного system | Сгенерируйте операторы кода, которые создают глобальные объявления extern . |
ProfilerSystemDecls | system , functionType | Объявления для заданного system для заданного functionType | Сгенерируйте код для объявлений необходимой переменной в рамках атомарной подсистемы Output , Update , OutputUpdate или функция Derivatives . |
ProfilerSystemStart | system , functionType | Профилировщик запускает команды для заданного system и functionType | Сгенерируйте код, который запускает профилировщик в рамках атомарной подсистемы Output , Update , OutputUpdate или функция Derivatives . |
ProfilerSystemFinish | system , functionType | Команды конца профилировщика для заданного system и functionType | Сгенерируйте код, который останавливает профилировщик в рамках Output , Update , OutputUpdate или функций Derivatives атомарной подсистемы. |
ProfilerSystemTerminate | system | Код завершения профилировщика для заданного system | Сгенерируйте код, который отключает профилирование (и возможно сообщает о результатах) для атомарной подсистемы. |
Для примера файл TLC смотрите
.matlabroot/toolbox/rtw/rtwdemos/rtwdemo_profile_hook.tlc
В вашем файле
задайте следующие глобальные переменные.target.tlc
Define ... | Быть... |
---|---|
TLC_TRUE или 1, чтобы включить профилирование (TLC_FALSE или 0, чтобы выключить профилирование) | |
Имя файла TLC, который вы создали на шаге 1 |
Быстрый способ задать глобальные переменные состоит в том, чтобы задать параметры с опцией -a
. Можно применить эту опцию при помощи команды set_param
, чтобы установить образцовый параметр конфигурации TLCOptions
. Например,
>> set_param(gcs,'TLCOptions', ... '-aProfileGenCode=1 -aProfilerTLC="rtwdemo_profile_hook.tlc"')
Рассмотрите параметры конфигурации установки для генерации отчета генерации кода. Можно затем исследовать профильный код в контексте кода, сгенерированного для модели.
Создайте модель. Процесс сборки встраивает профильный код в местоположения функции рычага в сгенерированном коде для модели.
Запустите сгенерированный исполняемый файл. В Окне Команды MATLAB введите
. Вы видите профильный отчет, вы запрограммировали в профилировании файл TLC, который вы создали. Например, отчет профиля мог перечислить количество вызовов, выполненных к каждой системе в модели и количестве циклов ЦП, потраченных в каждой системе.!model-name
Для получения дополнительной информации при программировании файла .tlc
и определении переменные настройки TLC, см. Компилятор Выходного языка.
Интерфейс функции рычага TLC для профилирования скорости выполнения кода не поддерживает системный конечный файл S-функции (rtwsfcn.tlc
).