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

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

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

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

БлокФлажок, чтобы выбрать
1-D Lookup TableRemove protection against out-of-range input in generated code
2-D Lookup Table
n-D Lookup Table
Prelookup
Interpolation Using PrelookupRemove protection against out-of-range index in generated code

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

Чтобы проверить использование флажка, осуществите следующие проверки Model Advisor и выполните рекомендуемые действия.

Проверка Model AdvisorКогда осуществить проверку

By Product> Embedded Coder> Identify lookup table blocks that generate expensive out-of-range checking code

Для КПД кода

By Product> Simulink Check> Modeling Standards> DO-178C/DO-331 Checks> Check usage of lookup table blocks

Для важных приложений безопасности

Для получения дополнительной информации о Model Advisor, смотрите Проверку Ваша Модель Используя Model Advisor в документации Simulink®.

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

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

Фактор

Даже степень 2 расположенных с интервалами данных

Равномерно распределенные данные

Неравномерно распределенные данные

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

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

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

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

Ошибка

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

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

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

Использование ROM

Использование меньше команды ROM, но больше данных ROM.

Использование меньше команды ROM, но больше данных ROM.

Использование больше команды ROM, но меньше данных ROM.

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

Не значительный.

Не значительный.

Не значительный.

Следуйте этим инструкциям:

  • Для типов данных с фиксированной точкой используйте точки останова с даже, power-2 интервал.

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

Чтобы идентифицировать возможности для того, чтобы повысить эффективность кода в блоках интерполяционной таблицы, осуществите следующие проверки Model Advisor и выполните рекомендуемые действия:

  • By Product> Embedded Coder> Identify questionable fixed-point operations

  • By Product> Embedded Coder> Identify blocks that generate expensive saturation and rounding code

Для получения дополнительной информации о Model Advisor, смотрите Проверку Ваша Модель Используя Model Advisor в документации Simulink.

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

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

Для получения дополнительной информации смотрите Типы данных параметров в Сгенерированном коде (Embedded Coder) и Создайте Настраиваемый Калибровочный Параметр в Сгенерированном коде (Simulink Coder).

Эффективный код для упорядоченного по строкам размещения массивов

Чтобы сгенерировать эффективный код для упорядоченного по строкам размещения массивов, выберите параметр конфигурации модели Math and Data Types> Use algorithms optimized for row-major array layout. Упорядоченные по строкам алгоритмы выполняют с лучшей скоростью и использованием памяти при работе с табличными данными с упорядоченным по строкам размещением массивов. Точно так же упорядоченные по столбцам алгоритмы по умолчанию выполняют лучше всего с упорядоченным по столбцам размещением массивов. Рассмотрите использование алгоритма, который оптимизирован для заданного размещения массивов, чтобы достигнуть лучшей эффективности. Например, используйте упорядоченные по строкам алгоритмы, когда размещение массивов будет установлено как упорядоченное по строкам во время генерации кода.

Размещение массивовАлгоритмБлагоприятный для кэша алгоритм
Упорядоченный по столбцамУпорядоченный по столбцамРекомендуемый
Упорядоченный по строкамУпорядоченный по строкамРекомендуемый
Упорядоченный по строкамУпорядоченный по столбцамНе рекомендуемый
Упорядоченный по столбцамУпорядоченный по строкамНе рекомендуемый

Для получения дополнительной информации смотрите Упорядоченное по столбцам Размещение к Упорядоченному по строкам Преобразованию Размещения Моделей с Блоками Интерполяционной таблицы (Simulink Coder).

Смотрите также

| |

Похожие темы