Производительность

Уменьшайте использование памяти и улучшите скорость выполнения сгенерированного кода

При разработке моделей Simulink®, из которых вы намереваетесь сгенерировать код, используйте параметр конфигурации модели, чтобы уменьшать RAM и потребление ROM и ускорить выполнение кода. Если вы хотите больше защитного кода, за счет некоторого КПД, можно отключить один или несколько из этих параметров.

Можно сконфигурировать профилирование выполнения кода, чтобы определить, удовлетворяет ли сгенерированный код требования в реальном времени целевого компьютера и секций кода, которые требуют улучшений скорости использования памяти или выполнения. Можно также использовать Советника Генерации кода проверки, если текущая настройка модели оптимизирована для отладки или выполнения кода.

Параметры конфигурации Simulink

Темы

Основы оптимизации кода

Увеличьте скорость генерации кода

Измените модель, чтобы увеличить скорость, на которой генератор кода генерирует код.

Инструменты оптимизации и методы

Примените инструменты, такие как Model Advisor и методы, чтобы оптимизировать модель для генерации кода.

Управляйте оптимизацией компилятора

Управляйте оптимизацией компилятора для своего make-файла на уровне пользовательского интерфейса Simulink.

Безопасное программирование

Скорость выполнения субнормальных чисел

Минимизируйте возможность выполнения, замедляется или переполняется из-за субнормальной задержки вычисления номера.

Удалите код от с плавающей точкой до целочисленных преобразований, который переносит значения из области значений

Если входные значения в вашем приложении находятся в области значений выходного типа, удаляют код для из области значений, с плавающей точкой к целочисленным преобразованиям.

Удалите код, который сопоставляет NaN с целочисленным нулем

Если входные значения NaN не существуйте в своем приложении, указывайте, что генератор кода удаляет код, который сопоставляет NaN к целочисленному нулю.

Отключите неличные проверки или встраивающий для математических функций

Используйте записи индивидуальной настройки заменяющей библиотеки кода (CRL), чтобы выборочно отключить неличные проверки на математические функции и встраивание математических функций.

Сокращение копии данных

Минимизируйте расчеты и устройство хранения данных для промежуточных результатов в блоке Выходные параметры

Генератор кода сворачивает расчеты блока в отдельное выражение, вместо того, чтобы генерировать отдельные операторы кода и объявления устройства хранения данных для каждого блока в модели.

Сверните выражения

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

Включите и повторное использование локальный блок Выходные параметры в сгенерированном коде

Где возможно, генератор кода объявляет, блокируют выходные параметры как локальные переменные, так, чтобы он мог потенциально снова использовать эти переменные.

Сгенерируйте эффективный код для сигналов шины

Модель соединяет шиной, чтобы максимизировать КПД сгенерированного кода.

Встройте инвариантные сигналы

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

Используйте Функцию memcpy, чтобы Оптимизировать Сгенерированный код для Векторных Присвоений

Генератор кода оптимизирует сгенерированный код для векторных присвоений, заменяя for циклы с memcpy вызовы функции.

Сгенерируйте эффективный код для сигналов шины

Модель соединяет шиной, чтобы максимизировать КПД сгенерированного кода.

Использование памяти

Векторная оптимизация операции

Генератор кода уменьшает стековую память, заменяя временные локальные массивы на локальные переменные.

Уменьшайте использование памяти для булевых и переменных настройки состояния

Уменьшайте объем памяти, который хранит переменные настройки состояния и Boolean переменные.

Оптимизируйте Сгенерированный код Используя Функцию memset

memset функция очищает внутреннюю память, независимо от типа, к целочисленной комбинации двоичных разрядов 0 (то есть, все биты выключены).

Настройте выделение стекового пространства

Управляйте максимальным допустимым размером стека, чтобы обеспечить некоторое управление, заданы ли данные локально или глобально в сгенерированном коде.

Сконфигурируйте порог развертывания цикла

Начиная в значении по умолчанию 5, генератор кода начинает использовать for цикл вместо отдельных операторов, чтобы присвоить значения элементам или массива параметров сигнала.

Задайте тип данных с одинарной точностью для встраиваемого приложения

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

Сгенерируйте эффективный код путем определения типов данных для параметров блоков

Чтобы сгенерировать более эффективный код, совпадайте с типами данных параметров типам данных сигнала или сохраните параметры в меньших типах данных.

Оптимизируйте сгенерированный код Используя булевы данные для логических сигналов

Генератор кода оптимизирует сгенерированный код путем хранения логических сигналов как Boolean типы данных.

Оптимизируйте использование памяти для счетчиков времени

Оптимизируйте память, которую генератор кода выделяет в течение прошедшего времени или абсолютного времени.

Скорость выполнения

Оптимизируйте сгенерированный код объединением нескольких конструкций

Генератор кода использует анализ зависимости по данным, чтобы объединить for построения, чтобы уменьшать статический размер кода и ответвление во время выполнения.

Сконфигурируйте порог развертывания цикла

Начиная в значении по умолчанию 5, генератор кода начинает использовать for цикл вместо отдельных операторов, чтобы присвоить значения элементам или массива параметров сигнала.

Устраните пути к мертвому коду в сгенерированном коде

Генератор кода устраняет мертвый (то есть, неиспользованный) пути выполнения кода от сгенерированного кода.

Умножение с плавающей точкой, чтобы обработать сетевую наклонную коррекцию

Для процессоров, которые поддерживают эффективное умножение, повысьте эффективность кода при помощи умножения с плавающей точкой, чтобы обработать сетевую наклонную коррекцию.

Удалите код для блоков, которые не оказывают влияния на результаты расчетов

Генератор кода увеличивает скорость выполнения и уменьшает потребление ROM путем удаления кода, который не влияет на результаты расчетов.

Встроенные числовые значения параметров блоков

Уменьшайте глобальное Использование оперативной памяти путем встраивания литеральных числовых значений параметров блоков.

Оптимизируйте сгенерированный код Используя данные фиксированной точки с Simulink®, Stateflow® и MATLAB®

Сгенерируйте фиксированную точку в Simulink, Stateflow® и MATLAB®.

Сгенерируйте целевую оптимизацию в коде алгоритма

Настройте сгенерированный код алгоритма с целевой оптимизацией.

Используйте условное входное выполнение ветви

Для Switch и блоков Multiport Switch, Simulink выполняет только блоки, которые вычисляют вход управления и ввод данных, который выбирает вход управления.

Оптимизируйте сгенерированный код для комплексных сигналов

Генератор кода выполняет различную оптимизацию на структурах, которые представляют сигналы в сгенерированном коде.

Ускорьте линейную алгебру в коде, сгенерированном от блока MATLAB function

Сгенерируйте призывы LAPACK к определенным функциям линейной алгебры в блоке MATLAB function. Задайте библиотеку LAPACK, чтобы использовать.

Ускорьте Матричные операции в коде, сгенерированном от блока MATLAB function

Сгенерируйте призывы BLAS к определенным низкоуровневым операциям над матрицей. Задайте библиотеку BLAS, чтобы использовать.

Ускорьте быстрые преобразования Фурье в коде, сгенерированном от блока MATLAB function

Сгенерируйте библиотеку FFTW, призывает к быстрым преобразованиям Фурье в блоке MATLAB Function. Задайте библиотеку FFTW.

Синхронизируйте многопоточный FFTW, планирующий в коде, сгенерированном от блока MATLAB function

Реализуйте методы класса коллбэка библиотеки FFT и обеспечьте код С поддержки, чтобы предотвратить параллельный доступ к планированию FFTW.

Выделение управляющей памяти для массивов Переменного Размера в блоке MATLAB function

Отключите динамическое выделение памяти или задайте порог динамического выделения памяти для блоков MATLAB Function.

Профилирование выполнения кода

Профилирование выполнения для сгенерированного кода

Используйте профилирование выполнения кода, чтобы наблюдать скорость выполнения кода.