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 имеет переменные, которые являются большими массивами или структурами. Ваши переменные не снова используются в сгенерированном коде. Они сохраняются. Вы хотите видеть, влияет ли дополнительная память, необходимая, чтобы сохранить имена переменных больших массивов или структур, на производительность. | Большие массивы повторного использования и структуры |