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

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

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

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

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

Чтобы проверить использование флажка, осуществите следующие проверки 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).

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

| |

Похожие темы