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

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

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

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

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

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

УсловиеДействие
У вас есть for- циклы, итерации которых независимы друг от друга.

Сгенерируйте код с параллельными циклами for (parfor)

Автоматически параллелизируйте циклы for в сгенерированном коде

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

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

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