Профилируя скорость выполнения сгенерированного кода, можно помочь проверить, что код соответствует требованиям скорости выполнения.
Профилирование может быть особенно важным в начале цикла разработки для выявления потенциальных архитектурных проблем, которые могут быть более дорогими для решения в дальнейшем в процессе. Профилирование может также идентифицировать узкие места и процедурные проблемы, которые указывают на необходимость оптимизации, например, с помощью внутреннего цикла или встроенного кода.
Примечание
Если у вас есть Embedded Coder® лицензия, смотрите Профилирование выполнения кода для альтернативного и более простого подхода, основанного на симуляциях «цикл» (SIL) или «цикл» (PIL).
Вы можете профилировать код, сгенерированный с помощью технологии генерации кода, с помощью функционального интерфейса Target Language Compiler (TLC) hook.
Чтобы использовать интерфейс функции подсоединения профиля:
Для вашего системного целевого файла создайте файл TLC, который задает следующие функции hook. Запишите функции так, чтобы они задали код профилирования. Генератор кода добавляет код функции hook к коду, сгенерированному для атомарных систем в модели.
Функция | Входные параметры | Выход | Описание |
---|---|---|---|
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 | Сгенерируйте код, который прекращает профилирование (и, возможно, сообщает результаты) для атомарной подсистемы. |
В вашем
задайте следующие глобальные переменные.target
.tlc
Определите... | Быть... |
---|---|
TLC_TRUE или 1, чтобы включить профилирование (TLC_FALSE или 0, чтобы выключить профилирование) | |
Имя файла TLC, который вы создали на шаге 1 |
Быстрый способ задать глобальные переменные - это задать параметры с помощью -a
опция. Вы можете применить эту опцию, используя set_param
команда для установки параметра конфигурации модели TLCOptions
. Для примера,
>> set_param(gcs,'TLCOptions', ... '-aProfileGenCode=1 -aProfilerTLC="rtwdemo_profile_hook.tlc"')
Рассмотрите настройку параметров конфигурации для генерации отчета о генерации кода. Затем можно изучить код профилирования в контексте кода, сгенерированного для модели.
Создайте модель. Процесс сборки встраивает код профилирования в местоположения функций hook в сгенерированный код для модели.
Запустите сгенерированный исполняемый файл. В Командном Окне MATLAB введите!
. Отчет о профилировании, запрограммированный в созданном файле TLC профилирования. Например, в отчете профиля может быть указано количество вызовов, выполненных в каждой системе в модели, и количество циклов ЦП, потраченных в каждой системе.model-name
Для получения дополнительной информации о программировании .tlc
файл и определение переменных строений TLC, см. Компилятор целевого языка.
Интерфейс функции трубки TLC для профилирования скорости выполнения кода не поддерживает целевой файл системы S-функции (rtwsfcn.tlc
).