Скорость выполнения кода профиля

Профилируя скорость выполнения сгенерированного кода, можно помочь проверить, что код соответствует требованиям скорости выполнения.

Профилирование может быть особенно важным в начале цикла разработки для выявления потенциальных архитектурных проблем, которые могут быть более дорогими для решения в дальнейшем в процессе. Профилирование может также идентифицировать узкие места и процедурные проблемы, которые указывают на необходимость оптимизации, например, с помощью внутреннего цикла или встроенного кода.

Примечание

Если у вас есть Embedded Coder® лицензия, смотрите Профилирование выполнения кода для альтернативного и более простого подхода, основанного на симуляциях «цикл» (SIL) или «цикл» (PIL).

Используйте интерфейс Profile Hook Function

Вы можете профилировать код, сгенерированный с помощью технологии генерации кода, с помощью функционального интерфейса Target Language Compiler (TLC) hook.

Чтобы использовать интерфейс функции подсоединения профиля:

  1. Для вашего системного целевого файла создайте файл TLC, который задает следующие функции hook. Запишите функции так, чтобы они задали код профилирования. Генератор кода добавляет код функции hook к коду, сгенерированному для атомарных систем в модели.

    ФункцияВходные параметрыВыходОписание
    ProfilerHeadersvoidМассив имен заголовочных файловВерните массив имен заголовочных файлов, которые будут включены в сгенерированный код.
    ProfilerTypedefsvoidtypedefsСгенерируйте операторы кода для определений типов профилировщика.
    ProfilerGlobalDatasystemГлобальные данные для заданного systemСгенерируйте операторы кода, которые объявляют глобальные данные.
    ProfilerExternDataDeclssystemextern объявления для заданного systemСгенерируйте операторы кода, которые создают глобальные extern декларации.
    ProfilerSystemDeclssystem, functionTypeОбъявления для указанного system для заданного functionTypeСгенерируйте код для необходимых объявлений переменных в возможности атомарной подсистемы Output, Update, OutputUpdate, или Derivatives функция.
    ProfilerSystemStartsystem, functionTypeКоманды запуска профилировщика для заданного system и functionTypeСгенерируйте код, который запускает профилировщик в области действия атомарной подсистемы Output, Update, OutputUpdate, или Derivatives функция.
    ProfilerSystemFinishsystem, functionTypeКоманды конца профилировщика для заданного system и functionTypeСгенерируйте код, который останавливает профилировщик в пределах возможностей Output, Update, OutputUpdate, или Derivatives функций атомарной подсистемы.
    ProfilerSystemTerminatesystemКод окончания профилировщика для заданного systemСгенерируйте код, который прекращает профилирование (и, возможно, сообщает результаты) для атомарной подсистемы.
  2. В вашем target.tlc задайте следующие глобальные переменные.

    Определите...Быть...

    ProfileGenCode

    TLC_TRUE или 1, чтобы включить профилирование (TLC_FALSE или 0, чтобы выключить профилирование)

    ProfilerTLC

    Имя файла TLC, который вы создали на шаге 1

    Быстрый способ задать глобальные переменные - это задать параметры с помощью -a опция. Вы можете применить эту опцию, используя set_param команда для установки параметра конфигурации модели TLCOptions. Для примера,

    >> set_param(gcs,'TLCOptions', ...
         '-aProfileGenCode=1 -aProfilerTLC="rtwdemo_profile_hook.tlc"')
  3. Рассмотрите настройку параметров конфигурации для генерации отчета о генерации кода. Затем можно изучить код профилирования в контексте кода, сгенерированного для модели.

  4. Создайте модель. Процесс сборки встраивает код профилирования в местоположения функций hook в сгенерированный код для модели.

  5. Запустите сгенерированный исполняемый файл. В Командном Окне MATLAB введите! model-name. Отчет о профилировании, запрограммированный в созданном файле TLC профилирования. Например, в отчете профиля может быть указано количество вызовов, выполненных в каждой системе в модели, и количество циклов ЦП, потраченных в каждой системе.

Для получения дополнительной информации о программировании .tlc файл и определение переменных строений TLC, см. Компилятор целевого языка.

Ограничение функционального интерфейса крюка профиля

Интерфейс функции трубки TLC для профилирования скорости выполнения кода не поддерживает целевой файл системы S-функции (rtwsfcn.tlc).

Похожие темы