MATLAB® Coder™ вводит определенную оптимизацию при генерации C/C++
код или MEX
функции из вашего кода MATLAB. Для получения дополнительной информации смотрите Оптимизацию MATLAB Coder в Сгенерированном коде.
Чтобы оптимизировать ваш сгенерированный код далее, вы можете:
Адаптируйте свой код MATLAB.
Генерация кода системы управления с помощью настройки возражает от командной строки или диалогового окна настроек проекта.
Чтобы оптимизировать скорость выполнения сгенерированного кода, для этих условий, выполняют следующие действия по мере необходимости:
Условие | Действие |
---|---|
У вас есть for - циклы, итерации которых независимы друг от друга. | Сгенерируйте код с параллельными циклами for (parfor) Автоматически параллелизируйте циклы for в сгенерированном коде |
У вас есть массивы переменного размера в вашем коде MATLAB. | Минимизируйте динамическое выделение памяти |
У вас есть несколько массивов переменного размера в вашем коде MATLAB. Вы хотите динамическое выделение памяти для больших массивов и статическое выделение для меньших единиц. | Установите порог динамического выделения памяти |
Вы хотите, чтобы ваша сгенерированная функция была вызвана ссылкой. | Избегайте копий данных входных параметров функции в сгенерированном коде |
Вы вызываете небольшие функции в своем коде MATLAB. | Встроенный код |
Вы ограничили целевую память для своего сгенерированного кода. Вы хотите встроить небольшие функции и сгенерировать отдельный код для больших единиц. | Управляйте встраиванием, чтобы подстроить эффективность и удобочитаемость сгенерированного кода |
Вы не хотите генерировать код для выражений, которые содержат константы только. | Сверните вызовы функции в константы |
Вы переносите операции цикла в своем коде MATLAB, которые не зависят от индекса цикла. | Минимизируйте избыточные операции в циклах |
Вы переносите целочисленные операции в своем коде MATLAB. Вы знаете заранее, что целочисленное переполнение не происходит во время выполнения вашего сгенерированного кода. | Отключите поддержку целочисленного переполнения |
Вы знаете заранее тот Inf s и NaN s не происходят во время выполнения вашего сгенерированного кода. | Отключите поддержку неличных чисел |
У вас есть for - циклы с немногими итерациями. | Разверните циклы for и циклы parfor |
Вам уже оптимизировали устаревший код C/C++ для вашего целевого окружения. | Объединяйтесь Внешний / Пользовательский код |
Вы хотите ускорить код, сгенерированный для основных векторных и матричных функций. | Ускорьте Матричные операции в сгенерированном автономном коде при помощи вызовов BLAS |
Вы хотите ускорить код, сгенерированный для функций линейной алгебры. | Ускорьте линейную алгебру в сгенерированном автономном коде при помощи вызовов LAPACK |
Вы хотите ускорить код, сгенерированный для функций быстрого преобразования Фурье (FFT). | Ускорьте быстрые преобразования Фурье в сгенерированном автономном коде при помощи вызовов библиотеки FFTW |
Чтобы оптимизировать использование памяти сгенерированного кода, для этих условий, выполняют следующие действия по мере необходимости:
Условие | Действие |
---|---|
У вас есть if/else/elseif операторы или switch/case/otherwise операторы в вашем коде MATLAB. Вы не требуете некоторых ветвей операторов в вашем сгенерированном коде. | Предотвратите генерацию кода для неиспользованных путей исполнения |
Вы хотите, чтобы ваша сгенерированная функция была вызвана ссылкой. | Избегайте копий данных входных параметров функции в сгенерированном коде |
Вы ограничили стековое пространство для своего сгенерированного кода. | Управляйте использованием стекового пространства |
Вы вызываете небольшие функции в своем коде MATLAB. | Встроенный код |
Вы ограничили целевую память для своего сгенерированного кода. Вы хотите встроить небольшие функции и сгенерировать отдельный код для больших единиц. | Управляйте встраиванием, чтобы подстроить эффективность и удобочитаемость сгенерированного кода |
Вы не хотите генерировать код для выражений, которые содержат константы только. | Сверните вызовы функции в константы |
Вы переносите операции цикла в своем коде MATLAB, которые не зависят от индекса цикла. | Минимизируйте избыточные операции в циклах |
Вы переносите целочисленные операции в своем коде MATLAB. Вы знаете заранее, что целочисленное переполнение не происходит во время выполнения вашего сгенерированного кода. | Отключите поддержку целочисленного переполнения |
Вы знаете заранее тот Inf - s и NaN - s не происходит во время выполнения вашего сгенерированного кода. | Отключите поддержку неличных чисел |
Ваш код MATLAB имеет переменные, которые являются большими массивами или структурами. Ваши переменные не снова используются в сгенерированном коде. Они сохраняются. Вы хотите видеть, влияет ли дополнительная память, необходимая, чтобы сохранить имена переменных больших массивов или структур, на эффективность. | Большие массивы повторного использования и структуры |