coder.inline

Пакет: кодер

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

Синтаксис

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

Описание

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

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

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