По умолчанию созданный код для следующих блоков таблицы подстановки включает условные операторы, которые проверяют наличие точек останова вне диапазона или входов индекса:
Чтобы создать более эффективный код, можно удалить условные операторы, защищающие входные значения вне допустимого диапазона.
| Блок | Флажок для выбора |
|---|---|
| 1-D Таблица подстановки | Снять защиту от выхода за пределы диапазона ввода в сгенерированном коде |
| 2-D Таблица подстановки | |
| n-D таблица подстановки | |
| Предварительный поиск | |
| Интерполяция с использованием Prelookup | Снять защиту от индекса вне диапазона в сформированном коде |
Установка флажка в диалоговом окне блока повышает эффективность кода, так как выполняется меньше инструкций. Однако при создании кода для критически важных для безопасности приложений не следует удалять код проверки диапазона.
Чтобы проверить использование флажка, выполните следующие проверки Model Advisor и выполните рекомендуемые действия.
| Проверка помощника по модели | Когда выполнять проверку |
|---|---|
По продукту > Embedded Coder > Определение блоков таблицы поиска, которые создают дорогостоящий код проверки за пределами диапазона | Для эффективности кода |
По продукту > Simulink Check > Modeling Standards > DO-178C/DO-331 Checks > Проверка использования блоков таблицы подстановки | Для критически важных для безопасности приложений |
Дополнительные сведения о Model Advisor см. в разделе Проверка модели с помощью Model Advisor в документации Simulink ®.
Если точки останова в таблице подстановки настраиваются, интервал не влияет на эффективность или использование памяти сгенерированного кода. Если точки останова не могут быть настроены, тип интервала может повлиять на следующие факторы.
Фактор | Четная мощность 2 разнесенных данных | Равномерно разнесенные данные | Неравномерно разнесенные данные |
|---|---|---|---|
Скорость выполнения | Скорость выполнения - самая быстрая. Поиск и интерполяция положения такие же, как и для равномерно разнесенных данных. Однако, чтобы увеличить скорость немного больше для типов с фиксированной точкой, битовый сдвиг заменяет поиск позиции, а битовая маска заменяет интерполяцию. | Скорость выполнения выше, чем для неравномерно разнесенных данных, потому что поиск позиции выполняется быстрее, и интерполяция использует простое деление. | Скорость выполнения является самой медленной из различных интервалов, потому что поиск положения медленнее, и интерполяция требует больше операций. |
Ошибка | Погрешность может быть больше, чем для неравномерно разнесенных данных, потому что аппроксимация функции с неравномерной кривизной требует большего количества точек для достижения такой же точности. | Погрешность может быть больше, чем для неравномерно разнесенных данных, потому что аппроксимация функции с неравномерной кривизной требует большего количества точек для достижения такой же точности. | Погрешность может быть меньше, поскольку аппроксимация функции с неравномерной кривизной требует меньшего количества точек для достижения такой же точности. |
Использование ПЗУ | Использует меньше ПЗУ команд, но больше ПЗУ данных. | Использует меньше ПЗУ команд, но больше ПЗУ данных. | Использует больше ПЗУ команд, но меньше ПЗУ данных. |
Использование ОЗУ | Несущественно. | Несущественно. | Несущественно. |
Следуйте следующим инструкциям:
Для типов данных с фиксированной точкой используйте точки останова с четным интервалом мощности 2.
Для типов данных без фиксированных точек используйте точки останова с четным интервалом.
Чтобы определить возможности повышения эффективности кода в блоках таблицы подстановки, выполните следующие проверки Model Advisor и выполните рекомендуемые действия.
По продукту > Встроенный кодер > Определение сомнительных операций с фиксированной точкой
По продукту > Встроенный кодер > Определение блоков, генерирующих дорогостоящий код насыщения и округления
Дополнительные сведения о Model Advisor см. в разделе Проверка модели с помощью Model Advisor в документации Simulink.
При использовании переменных рабочей области для хранения данных таблицы и точек останова для блоков таблицы подстановки, а затем для настройки этих переменных можно избежать копирования данных, используя один и тот же тип данных для параметра блока и переменной. Переменные рабочей области включают числовые переменные MATLAB ® иSimulink.Parameter объекты, хранящиеся в рабочей области, например в базовой рабочей области, или в словаре данных. Если тип данных переменной меньше, чем тип данных параметра блока, сгенерированный код неявно преобразует тип данных переменной в тип данных параметра блока. Это неявное приведение требует копии данных, которая потенциально может значительно увеличить потребление ОЗУ и замедлить скорость выполнения кода для больших векторов или матриц.
Дополнительные сведения см. в разделах Типы данных параметров в сгенерированном коде (Embedded Coder) и Создание настраиваемого калибровочного параметра в сгенерированном коде (Simulink Coder).
Чтобы создать эффективный код для компоновки основной строки, выберите параметр конфигурации модели Math and Data Types > Use algoriths optimized for row-major array layout. Алгоритмы основных строк работают с максимальной скоростью и использованием памяти при работе с табличными данными с макетом основного массива строк. Аналогично, алгоритмы по умолчанию «столбец-основной» лучше всего работают с компоновкой «столбец-основной массив». Для достижения максимальной производительности рекомендуется использовать алгоритм, оптимизированный для указанной компоновки массива. Например, используйте алгоритмы мажор строки, когда макет массива устанавливается как мажор строки во время генерации кода.
| Макет массива | Алгоритм | Алгоритм, удобный для кэширования |
|---|---|---|
| Колонна-мажор | Колонна-мажор | Рекомендуется |
| Ряд-мажор | Ряд-мажор | Рекомендуется |
| Ряд-мажор | Колонна-мажор | Не рекомендуется |
| Колонна-мажор | Ряд-мажор | Не рекомендуется |
Дополнительные сведения см. в разделе Преобразование основных макетов столбцов в основные макеты строк моделей с блоками таблиц подстановки (Simulink Coder).
Интерполяция с использованием Prelookup | n-D таблица подстановки | Предварительный поиск