При разработке моделей Simulink ®, из которых предполагается генерировать код, используйте параметр конфигурации модели, чтобы уменьшить потребление ОЗУ и ПЗУ и ускорить выполнение кода. Если требуется больше защитного кода, за счет некоторой эффективности можно отключить один или несколько из этих параметров.
Можно настроить профилирование выполнения кода, чтобы определить, соответствует ли сгенерированный код требованиям в реальном времени к целевому оборудованию и разделам кода, которые требуют использования памяти или повышения скорости выполнения. С помощью помощника по созданию кода можно также проверить, оптимизирована ли текущая конфигурация модели для отладки или выполнения кода.
Увеличение скорости генерации кода
Измените модель, чтобы увеличить скорость, с которой генератор кода генерирует код.
Инструменты и методы оптимизации
Применение инструментов, таких как Model Advisor, и методов оптимизации модели для создания кода.
Оптимизация компилятора управления
Управление оптимизацией компилятора для make-файла на уровне интерфейса пользователя Simulink.
Минимизируйте возможность замедления выполнения или переполнения из-за задержки вычисления субнормального числа.
Если входные значения в приложении находятся в диапазоне выходного типа, удалите код для преобразования с плавающей запятой в целое значение вне диапазона.
Удалить код, сопоставляющий NaN целочисленному нулю
Если входные значения NaN не существует в приложении, укажите, что генератор кода удаляет код, который сопоставляется NaN до целого нуля.
Отключить нефинитные проверки или вложение для математических функций
Используйте записи настройки библиотеки замены кода (CRL), чтобы выборочно отключить нефинитные проверки математических функций и вложение математических функций.
Минимизация вычислений и хранения промежуточных результатов на блочных выходах
Генератор кода сворачивает вычисления блоков в одно выражение вместо создания отдельных операторов кода и объявлений хранения для каждого блока в модели.
Код кратности выражения для минимизации вычисления промежуточных результатов на блочных выходах и сохранения таких результатов во временных буферах или переменных.
Включение и повторное использование выходных данных локального блока в сгенерированном коде
Там, где это возможно, генератор кода объявляет блочные выходы локальными переменными, так что он потенциально может повторно использовать эти переменные.
Создание эффективного кода для сигналов шины
Моделирование шин для максимизации эффективности генерируемого кода.
Встроенные инвариантные сигналы
Используйте числовые значения инвариантных сигналов вместо их символических имен в сгенерированном коде.
Использование функции memcpy для оптимизации сгенерированного кода для векторных назначений
Генератор кода оптимизирует сгенерированный код для векторных назначений путем замены for петли с memcpy вызовы функций.
Создание эффективного кода для сигналов шины
Моделирование шин для максимизации эффективности генерируемого кода.
Оптимизация векторной операции
Генератор кода сокращает память стека, заменяя временные локальные массивы локальными переменными.
Сокращение использования памяти для логических переменных и переменных конфигурации состояния
Уменьшите объем памяти, в которой хранятся переменные конфигурации состояния и Boolean переменные.
Оптимизация сгенерированного кода с помощью функции memset
memset функция очищает внутреннее хранилище, независимо от типа, до целочисленной битовой комбинации 0 (то есть все биты выключены).
Настройка выделения пространства стека
Управление максимально допустимым размером стека для обеспечения определенного контроля над тем, определены ли данные локально или глобально в сгенерированном коде.
Настройка порога разбиения на шлейфы
Начиная со значения по умолчанию 5, генератор кода начинает использовать for цикл вместо отдельных операторов для назначения значений элементам массива сигналов или параметров.
Укажите тип данных с одной точностью для встраиваемого приложения
Создайте код, типы данных с плавающей запятой которого являются только одинарной точностью, например, для нацеливания на процессор с одинарной точностью.
Создание эффективного кода путем указания типов данных для параметров блока
Чтобы создать более эффективный код, сопоставьте типы данных параметров с типами данных сигнала или сохраните параметры в меньших типах данных.
Оптимизация сгенерированного кода с использованием логических данных для логических сигналов
Генератор кода оптимизирует сгенерированный код, сохраняя логические сигналы как Boolean типы данных.
Оптимизация использования памяти для счетчиков времени
Оптимизируйте память, выделенную генератором кода для прошедшего времени или абсолютного времени.
Оптимизация сгенерированного кода путем объединения нескольких для конструкций
Генератор кода использует анализ зависимости данных для объединения for конструкции для уменьшения размера статического кода и ветвления среды выполнения.
Настройка порога разбиения на шлейфы
Начиная со значения по умолчанию 5, генератор кода начинает использовать for цикл вместо отдельных операторов для назначения значений элементам массива сигналов или параметров.
Устранение путей мертвого кода в сгенерированном коде
Генератор кода устраняет неработающие (то есть неиспользуемые) пути кода из сгенерированного кода.
Умножение с плавающей запятой для обработки коррекции чистого откоса
Для процессоров, поддерживающих эффективное умножение, повысьте эффективность кода, используя умножение с плавающей запятой для обработки коррекции чистого наклона.
Удалить код для блоков, не влияющих на результаты вычислений
Генератор кода увеличивает скорость выполнения и уменьшает потребление ПЗУ, удаляя код, который не влияет на результаты вычислений.
Встроенные числовые значения параметров блока
Сократите использование глобальной оперативной памяти, встроив числовые значения букв параметров блока.
Создание кода с фиксированной точкой в Simulink, Stateflow ® и MATLAB ®.
Создание целевых оптимизаций в рамках кода алгоритма
Настройка сгенерированного кода алгоритма с оптимизацией для конкретных целей.
Использовать выполнение ветви условного ввода
Для блоков Switch и Multiport Switch Simulink выполняет только те блоки, которые вычисляют управляющий вход и ввод данных, которые выбирает управляющий вход.
Оптимизация генерируемого кода для сложных сигналов
Генератор кода выполняет различные оптимизации структур, которые представляют сигналы в сгенерированном коде.
Ускорение линейной алгебры в коде, сгенерированном из функционального блока MATLAB
Создание вызовов LAPACK для определенных функций линейной алгебры в блоке функции MATLAB. Укажите библиотеку LAPACK для использования.
Ускорение операций матрицы в коде, сгенерированном из функционального блока MATLAB
Создание вызовов BLAS для определенных операций матрицы низкого уровня. Укажите библиотеку BLAS для использования.
Ускорение быстрых преобразований Фурье в коде, сгенерированном из функционального блока MATLAB
Создание вызовов библиотеки FFTW для быстрых преобразований Фурье в блоке функции MATLAB. Укажите библиотеку FFTW.
Реализуйте методы класса обратного вызова библиотеки FFT и предоставляйте поддерживающий код C для предотвращения параллельного доступа к планированию FFTW.
Управление распределением памяти для массивов переменного размера в функциональном блоке MATLAB
Отключите динамическое выделение памяти или укажите порог динамического выделения памяти для функциональных блоков MATLAB.
Профилирование выполнения для сгенерированного кода
Для проверки скорости выполнения кода используйте профилирование выполнения кода.