При разработке Simulink® модели, из которых вы намерены сгенерировать код, использовать параметр конфигурации модели, чтобы уменьшить потребление оперативной памяти и ПЗУ и ускорить выполнение кода. Если вам нужен более защитный код, за счет некоторой эффективности можно отключить один или несколько из этих параметров.
Можно сконфигурировать профилирование выполнения кода, чтобы определить, соответствует ли сгенерированный код требованиям вашего целевого компьютера и секций кода в реальном времени, которые требуют использования памяти или улучшения скорости выполнения. Можно также использовать Генерацию кода Advisor, чтобы проверить, оптимизировано ли текущее строение модели для отладки или выполнения кода.
Увеличение скорости генерации кода
Измените модель, чтобы увеличить скорость, с которой генератор кода генерирует код.
Инструменты и методов оптимизации
Применить инструменты, такие как Model Advisor, и методы для оптимизации модели для генерации кода.
Оптимизация компилятора управления
Управляйте оптимизацией компилятора для вашего make-файла на уровне пользовательского интерфейса Simulink.
Субнормальная скорость выполнения числа
Минимизируйте возможность замедления или переполнения выполнения из-за задержки вычисления субнормального числа.
Если входные значения в вашем приложении находятся в области значений выходного типа, удалите код для обратного преобразования с плавающей точкой в целое число.
Удалите код, который преобразует NaN в целый нуль
Если входные значения NaN
не существует в вашем приложении, укажите, что генератор кода удаляет код, который сопоставляется NaN
в целое число нуль.
Отключите нефинитные проверки или инкрустацию для математических функций
Используйте записи индивидуальной настройки библиотеки замещения кода (CRL), чтобы выборочно отключить нефинитные проверки математических функций и встроения математических функций.
Минимизация расчетов и хранения для промежуточных результатов на выходах блоков
Генератор кода складывает расчеты блоков в одно выражение, вместо того, чтобы генерировать отдельные операторы кода и объявления хранилища для каждого блока в модели.
Код складки выражения для минимизации расчета промежуточных результатов на выходах блоков и хранения таких результатов во временных буферах или переменных.
Включите и повторно используйте выходы локальных блоков в сгенерированном коде
Где это возможно, генератор кода объявляет выходы блоков как локальные переменные, так что он может потенциально повторно использовать эти переменные.
Сгенерируйте эффективный код для сигналов шины
Моделируйте шины, чтобы максимизировать эффективность сгенерированного кода.
Встроенные инвариантные сигналы
Используйте числовые значения инвариантных сигналов вместо их символьных имен в сгенерированном коде.
Используйте функцию memcpy для оптимизации сгенерированного кода для назначений векторов
Генератор кода оптимизирует сгенерированный код для назначений векторов путем замены for
циклы с memcpy
вызовы функций.
Сгенерируйте эффективный код для сигналов шины
Моделируйте шины, чтобы максимизировать эффективность сгенерированного кода.
Генератор кода уменьшает память стека путем замены временных локальных массивов локальными переменными.
Уменьшите использование памяти для логических переменных и переменных строения состояния
Уменьшите объем памяти, в которой хранятся переменные строения состояния и Boolean
переменные.
Оптимизируйте сгенерированный код, используя функцию memset
The memset
функция очищает внутреннее запоминающее устройство, независимо от типа, до целочисленного битового шаблона 0 (то есть все биты отключены).
Настройка распределения пространства стека
Управляйте максимально допустимым размером стека, чтобы обеспечить некоторый контроль над тем, определены ли данные локально или глобально в сгенерированном коде.
Сконфигурируйте порог размотки цикла
Начиная со значения по умолчанию 5, генератор кода начинает использовать for
цикл вместо отдельных операторов для назначения значений элементам массива сигналов или параметров.
Задайте тип данных с одной точностью для встраиваемого приложения
Сгенерируйте код, типы данных которого с плавающей точностью являются только одной точностью, например, для нацеливания на процессор с одной точностью.
Сгенерируйте эффективный код путем определения типов данных для параметров блоков
Чтобы сгенерировать более эффективный код, совпадайте типы данных параметров с типами данных сигнала или сохраняйте параметры в меньших типах данных.
Оптимизируйте сгенерированный код, используя логические данные для логических сигналов
Генератор кода оптимизирует сгенерированный код, сохраняя логические сигналы как Boolean
типы данных.
Оптимизируйте использование памяти для счетчиков времени
Оптимизируйте память, которую генератор кода выделяет для истекшего времени или абсолютного времени.
Оптимизируйте сгенерированный код путем объединения нескольких конструкций
Генератор кода использует анализ зависимостей данных для объединения for
Конструкции для уменьшения размера статического кода и ответвления во время выполнения.
Сконфигурируйте порог размотки цикла
Начиная со значения по умолчанию 5, генератор кода начинает использовать for
цикл вместо отдельных операторов для назначения значений элементам массива сигналов или параметров.
Устранение путей мертвого кода в сгенерированном коде
Генератор кода устраняет мертвые (то есть неиспользованные) пути кода из сгенерированного кода.
Умножение с плавающей точкой для обработки коррекции сетевого наклона
Для процессоров, которые поддерживают эффективное умножение, улучшите эффективность кода с помощью умножения с плавающей точкой, чтобы обработать коррекцию наклона сети.
Удалите код для блоков, которые не влияют на вычислительные результаты
Генератор кода увеличивает скорость выполнения и уменьшает потребление ПЗУ путем удаления кода, который не влияет на вычислительные результаты.
Встроенные числовые значения параметров блоков
Уменьшите глобальное использование оперативной памяти путем вставки буквальных числовых значений параметров блоков.
Сгенерируйте код с фиксированной точкой в 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.
Профилирование выполнения для сгенерированного кода
Используйте профилирование выполнения кода, чтобы наблюдать скорость выполнения кода.