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

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

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

Примечание

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

Используйте интерфейс функции рычага профиля

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

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

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

    ФункцияВходные параметры'OutputType' Описание
    ProfilerHeadersvoidМассив имен заголовочного файлаВозвратите массив имен заголовочного файла, которые будут включены в сгенерированный код.
    ProfilerTypedefsvoidtypedefsСгенерируйте операторы кода для определений типа профилировщика.
    ProfilerGlobalDatasystemГлобальные данные для заданного systemСгенерируйте операторы кода, которые объявляют глобальные данные.
    ProfilerExternDataDeclssystemОбъявления extern для заданного 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Сгенерируйте код, который отключает профилирование (и возможно сообщает о результатах) для атомарной подсистемы.

    Для примера файл TLC смотрите matlabroot/toolbox/rtw/rtwdemos/rtwdemo_profile_hook.tlc.

  2. В вашем файле target.tlc задайте следующие глобальные переменные.

    Define ...Быть...

    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. Создайте модель. Процесс сборки встраивает профильный код в местоположения функции рычага в сгенерированном коде для модели.

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

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

Профилируйте ограничение интерфейса функции рычага

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

Похожие темы