coder.inline

Пакет: кодер

Управляйте встраиванием в сгенерированном коде

Синтаксис

coder.inline('always')
coder.inline('never')
coder.inline('default')

Описание

coder.inline('always') встраивание сил текущей функции в сгенерированном коде. Поместите coder.inline директива в функции, к которой это применяется. Генератор кода не встраивает функции точки входа и рекурсивные функции. Кроме того, генератор кода не делает подставляемых функций в parfor циклы или подставляемые функции, вызванные от parfor циклы.

coder.inline('never') предотвращает встраивание текущей функции в сгенерированном коде. Предотвратите встраивание, когда это необходимо, чтобы упростить отображение между исходным кодом MATLAB® и сгенерированным кодом. Можно отключить встраивание для всех функций в командной строке при помощи -O disable:inline опция fiaccel команда.

coder.inline('default') использует внутреннюю эвристику, чтобы определить, встроить ли текущую функцию. Обычно, эвристика производит очень оптимизированный код. Используйте coder.inline только, когда необходимо подстроить эту оптимизацию.

Примеры

Предотвратите функциональное встраивание

В этом примере функционируйте foo не встраивается в сгенерированном коде:

function y = foo(x)
  coder.inline('never');
  y = x;
end

Используйте coder.inline в Операторах управления

Можно использовать coder.inline в коде потока управления. Если программное обеспечение обнаруживает противоречащий coder.inline директивы, сгенерированный код использует эвристику встраивания значения по умолчанию и выдает предупреждение.

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

function y = inline_division(dividend, divisor)

% For scalar division, inlining produces smaller code
% than the function call itself.  
if isscalar(dividend) && isscalar(divisor)
   coder.inline('always');
else
% Vector division produces a for-loop.
% Prohibit inlining to reduce code size.
   coder.inline('never');
end

if any(divisor == 0)
   error('Cannot divide by 0');
end

y = dividend / divisor;

Больше о

свернуть все

Встраивание

Метод, который заменяет вызов функции на содержимое (тело) этой функции. Встраивание устраняет издержки вызова функции, но может произвести больший код C/C++. Встраивание может создать возможности для дальнейшей оптимизации сгенерированного кода C/C++.

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

Введенный в R2011a