coder.ignoreSize

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

Описание

пример

coder.ignoreSize(expression) объявляет, что генератор кода не должен использовать постоянный размер выражения для создания специализаций функции.

Примеры

Дублирующие функции, сгенерированные для нескольких входных размеров

Если ваш MATLAB® код вызывает функцию несколько раз и пропускает входы разных размеров, генератор кода может создать функциональные специализации для каждого размера. Чтобы избежать этой проблемы, используйте coder.ignoreSize на входном параметре функции. Для примера этот код использует coder.ignoreSize чтобы избежать создания нескольких копий функции indexOf:

function [out1, out2] = test1(in)
  a = 1:10;
  b = 2:40;
  % Without coder.ignoreSize duplicate functions are generated
  out1 = indexOf(coder.ignoreSize(a), in);
  out2 = indexOf(coder.ignoreSize(b), in);
end

function index = indexOf(array, value)
  coder.inline('never');
  for i = 1:numel(array)
      if array(i) == value
          index = i;
          return
      end
  end
  index = -1;
  return
end

Чтобы сгенерировать код, введите:

codegen test1 -config:lib -report -args {1}

Входные параметры

свернуть все

Пример: foo(coder.ignoreSize(1:10))

Подробнее о

свернуть все

Специализация функции

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

Специализация функции создает эффективный код С за счет дублирования кода. Отчет генерации кода показывает все Функциям MATLAB специализации, которые создает генератор кода. Однако специализации могут не появиться в сгенерированном коде C/C + + из-за последующих преобразований или оптимизации.

Совет

  • Если вы присвоите выражение переменной и объявите переменную как переменный размер при помощи coder.varsize, это объявление имеет тот же эффект, что и использование coder.ignoreSize на выражение.

Введенный в R2019b