Управляйте встраиванием

Ограничьте встраивание когда:

  • Пределы размера сгенерированного кода превышены из-за чрезмерного встраивания функций. Например, предположите, что вы включаете оператор, coder.inline('always'), в определенной функции. Вы затем вызываете эту функцию на многих различных сайтах в вашем коде. Размер сгенерированного кода увеличивается, потому что функция встраивается каждый раз, когда это называется. Однако сайты вызова должны отличаться. Например, встраивание не приводит к большому размеру кода, если функция, которая будет встроена, несколько раз вызывается в цикле.

  • Вы ограничили RAM или стековое пространство.

Можно управлять встраиванием или отключить встраивание в целом. Чтобы отключить встраивание в командной строке, используйте -O disable:inline опция codegen команда. Эта опция отключает встраивание для всех функций.

Размер элемента управления встроенных функций

Можно использовать приложение MATLAB® Coder™ или интерфейс командной строки, чтобы управлять максимальным размером функций, которые могут быть встроены. Функциональный размер измеряется в терминах отвлеченного числа инструкций, не фактических инструкций MATLAB или инструкций в целевом процессоре. Экспериментируйте с этим параметром, чтобы получить поведение встраивания, которое вы хотите.

  • Используя приложение, в диалоговом окне настроек проекта, на вкладке All Settings, устанавливает значение поля, Inline threshold, к максимальному размеру, который вы хотите.

  • В командной строке создайте codegen объект настройки. Установите значение свойства, InlineThreshold, к максимальному размеру, который вы хотите.

    cfg = coder.config('lib');
    cfg.InlineThreshold = 100;

    Сгенерируйте код при помощи этого объекта настройки.

Размер элемента управления функций после встраивания

Можно использовать приложение MATLAB Coder или интерфейс командной строки, чтобы управлять максимальным размером функций после встраивания. Функциональный размер измеряется в терминах отвлеченного числа инструкций, не фактических инструкций MATLAB или инструкций в целевом процессоре. Экспериментируйте с этим параметром, чтобы получить поведение встраивания, которое вы хотите.

  • Используя приложение, в диалоговом окне настроек проекта, на вкладке All Settings, устанавливает значение поля Inline threshold max к максимальному размеру, который вы хотите.

  • В командной строке создайте codegen объект настройки. Установите значение свойства, InlineThresholdMax, к максимальному размеру, который вы хотите.

    cfg = coder.config('lib');
    cfg.InlineThresholdMax = 100;

    Сгенерируйте код при помощи этого объекта настройки.

Управляйте пределом размера стека на встроенных функциях

Определение предела на стековом пространстве ограничивает объем встраивания позволенного. Для исключительных функций выпущено стековое пространство для переменных, локальных для функции, когда функция возвращается. Однако для встроенных функций, стековое пространство остается занятым локальными переменными даже после того, как функция будет выполняться. Значение свойства InlineStackLimit измеряется в байтах. На основе информации от настроек целевого компьютера программное обеспечение оценивает количество переменных стека что определенное значение InlineStackLimit может разместить. Эта оценка исключает возможную оптимизацию компилятора C, такую как помещение переменных в регистрах.

Можно использовать приложение MATLAB Coder или интерфейс командной строки, чтобы управлять пределом размера стека на встроенных функциях.

  • Используя приложение, в диалоговом окне настроек проекта, на вкладке All Settings, устанавливает значение поля Inline stack limit к максимальному размеру, который вы хотите.

  • В командной строке создайте codegen объект настройки. Установите значение свойства, InlineThresholdMax, к максимальному размеру, который вы хотите.

    cfg = coder.config('lib');
    cfg.InlineStackLimit = 2000;

    Сгенерируйте код при помощи этого объекта настройки.

Смотрите также

|

Похожие темы