Стратегии оптимизации

MATLAB® Coder™ представляет определенную оптимизацию при генерации кода C/C++ или функций MEX из кода MATLAB. Для получения дополнительной информации смотрите Оптимизацию MATLAB CODER в Сгенерированном коде.

Чтобы оптимизировать ваш сгенерированный код далее, вы можете:

  • Адаптируйте свой код MATLAB.

  • Генерация кода системы управления с помощью настройки возражает от командной строки или диалогового окна настроек проекта.

Чтобы оптимизировать скорость выполнения сгенерированного кода, для этих условий, выполняют следующие действия по мере необходимости:

УсловиеДействие
У вас есть for - циклы, итерации которых независимы друг от друга.Сгенерируйте код с параллельными циклами for (parfor)
У вас есть массивы переменного размера в вашем коде MATLAB.Минимизируйте динамическое выделение памяти
У вас есть несколько массивов переменного размера в вашем коде MATLAB. Вы хотите динамическое выделение памяти для больших массивов и статическое выделение для меньших единиц.Установите порог динамического выделения памяти
Вы хотите, чтобы ваша сгенерированная функция была вызвана ссылкой.Устраните избыточные копии входных параметров функции
Вы вызываете небольшие функции в своем коде MATLAB.Встроенный код
Вы ограничили целевую память для своего сгенерированного кода. Вы хотите встроить небольшие функции и сгенерировать отдельный код для больших единиц.Управляйте встраиванием
Вы не хотите генерировать код для выражений, которые содержат константы только.Сверните вызовы функции в константы
Вы переносите операции цикла в своем коде MATLAB, которые не зависят от индекса цикла.Минимизируйте избыточные операции в циклах
Вы переносите целочисленные операции в своем коде MATLAB. Вы знаете заранее, что целочисленное переполнение не происходит во время выполнения вашего сгенерированного кода.Отключите поддержку целочисленного переполнения
Вы знаете заранее, что Inf s и NaN s не происходят во время выполнения вашего сгенерированного кода.Отключите поддержку неличных чисел
У вас есть for - циклы с немногими итерациями.Разверните циклы for
Вам уже оптимизировали устаревший код C/C++ для вашего целевого окружения.Интегрируйтесь Внешний / Пользовательский код
Вы хотите ускорить код, сгенерированный для основных векторных и матричных функций.Ускорьте Матричные операции в сгенерированном автономном коде при помощи вызовов BLAS
Вы хотите ускорить код, сгенерированный для функций линейной алгебры.Ускорьте линейную алгебру в сгенерированном автономном коде при помощи вызовов LAPACK

Чтобы оптимизировать использование памяти сгенерированного кода, для этих условий, выполняют следующие действия по мере необходимости:

УсловиеДействие
У вас есть операторы if/else/elseif или операторы switch/case/otherwise в вашем коде MATLAB. Вы не требуете некоторых ответвлений операторов в вашем сгенерированном коде.Предотвратите генерацию кода для неиспользованных путей к выполнению
Вы хотите, чтобы ваша сгенерированная функция была вызвана ссылкой.Устраните избыточные копии входных параметров функции
Вы ограничили стековое пространство для своего сгенерированного кода.Управляйте использованием стекового пространства
Вы вызываете небольшие функции в своем коде MATLAB.Встроенный код
Вы ограничили целевую память для своего сгенерированного кода. Вы хотите встроить небольшие функции и сгенерировать отдельный код для больших единиц.Управляйте встраиванием
Вы не хотите генерировать код для выражений, которые содержат константы только.Сверните вызовы функции в константы
Вы переносите операции цикла в своем коде MATLAB, которые не зависят от индекса цикла.Минимизируйте избыточные операции в циклах
Вы переносите целочисленные операции в своем коде MATLAB. Вы знаете заранее, что целочисленное переполнение не происходит во время выполнения вашего сгенерированного кода.Отключите поддержку целочисленного переполнения
Вы знаете заранее, что Inf-s и NaN-s не происходят во время выполнения вашего сгенерированного кода.Отключите поддержку неличных чисел
Ваш код MATLAB имеет переменные, которые являются большими массивами или структурами. Ваши переменные не снова используются в сгенерированном коде. Они сохраняются. Вы хотите видеть, влияет ли дополнительная память, необходимая, чтобы сохранить имена переменных больших массивов или структур, на производительность.Большие массивы повторного использования и структуры
Была ли эта тема полезной?