Профилирование скорости выполнения сгенерированного кода позволяет проверить соответствие кода требованиям к скорости выполнения.
Профилирование может быть особенно важным на ранних этапах цикла разработки для выявления потенциальных архитектурных проблем, которые могут быть более дорогостоящими для решения на более поздних этапах процесса. Профилирование может также определять узкие места и процедурные проблемы, которые указывают на необходимость оптимизации, например, с помощью внутреннего цикла или встроенного кода.
Примечание
Если у вас есть лицензия Embedded Coder ®, см. раздел Профилирование выполнения кода для альтернативного и более простого подхода, основанного на моделировании ПО в цикле (SIL) или процессора в цикле (PIL).
Можно профилировать код, сгенерированный с помощью технологии генерации кода, с помощью интерфейса функции захвата TLC (Target Language Compiler).
Для использования интерфейса функции захвата профиля:
Для системного целевого файла создайте файл TLC, который определяет следующие функции захвата. Запишите функции так, чтобы они указывали код профилирования. Генератор кода добавляет код функции крючка к коду, сгенерированному для атомных систем в модели.
| Функция | Входные аргументы | Тип вывода | Описание |
|---|---|---|---|
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"')Рассмотрите возможность настройки параметров конфигурации для создания отчета о создании кода. Затем можно изучить код профилирования в контексте кода, созданного для модели.
Создайте модель. Процесс построения встраивает код профилирования в расположение функции захвата в сгенерированном коде для модели.
Запустите созданный исполняемый файл. В окне команд MATLAB введите !. Отчет о профилировании отображается в созданном TLC-файле профилирования. Например, в отчете о профиле можно перечислить количество вызовов каждой системы в модели и количество циклов ЦП, затраченных в каждой системе.model-name
Для получения подробной информации о программировании a .tlc и определение переменных конфигурации TLC см. в разделе Компилятор целевого языка.
TLC hook function interface for profiling code execution speed не поддерживает целевой файл системы S-function (rtwsfcn.tlc).