Оцените производительность сгенерированного кода

Узнать, как характеристики сгенерированного кода и данных RAM/ROM влияют на метрику RAM/ROM.

Для получения информации о модели в качестве примера и других примерах в этом ряду, смотрите, Генерируют код С от Алгоритма управления для Встраиваемой системы.

Оценка кода

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

Можно далее классифицировать использование памяти как ROM (постоянная память) и RAM (оперативная память).

  • Доступ к данным из RAM быстрее, чем доступ к данным из ROM.

  • Исполняемые файлы и данные должны храниться на ROM, потому что RAM не обеспечивает данные между, подвергает циклу включения и выключения питания.

Этот пример оценивает требования к памяти и делит использование памяти на компоненты данных и функцию. Пример не оценивает скорость выполнения.

Информация о компиляторе

Эта оценка использует компилятор Freescale™ CodeWarrior®.

  • Компилятор: Freescale™ CodeWarrior®

  • Версия: 5.5.1.1430

  • Целевой процессор: степень PC 565

Просмотрите метрики кода

Как описано в Сборке Интегрированный Код Вне Сгенерированного кода окружения Simulink и Теста сгенерированный код может потребовать использования служебных функций. Служебные функции несут однократные, фиксированные расходы памяти. Из-за этих фиксированных издержек, данные в этом примере показывают использование памяти для:

  • Алгоритмы: код С сгенерирован из блок-схем Simulink® плюс функции определения данных

  • Утилиты: Функции, которые являются частью источника библиотеки Simulink® Coder™

  • Полный: сумма и алгоритма и утилит

Создайте настройку опций

Эти три оценки в этом примере используют ту же конфигурацию сборки. Freescale™ CodeWarrior® был сконфигурирован, чтобы минимизировать использование памяти и применить всю применимую оптимизацию.

Настройка 1: допускающие повторное использование функции с типом данных дважды

  • Исходные файлы: PCG_Eval_File_1.zip

  • Тип данных: Все удваивается

  • Включенные Данные: проект включает все данные, которых требует сборка (включая данные, объявленные как extern: pos_rqst, fbk_1, и fbk_2)

  • Основная Функция: модифицированная версия example_main от сборки интегрированный код вне окружения Simulink

  • Метод Вызова функции: Допускающие повторное использование функции для ПИ-контроллеров

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

            Function    Data
Algorithms  1172 bytes  549 bytes
Utilities   592 bytes   40 bytes
Full        1764 bytes  589 bytes

Настройка 2: допускающие повторное использование функции с одним типом данных

В этой настройке данные модели используют тип данных с плавающей точкой с одинарной точностью вместо двойной точности.

Настройка модели

  • Исходные файлы: PCG_Eval_File_2.zip

  • Тип данных: Все одиночные игры

  • Включенные Данные: проект включает все данные, которых требует сборка (включая данные, объявленные как extern: pos_rqst, fbk_1, и fbk_2)

  • Основная Функция: модифицированная версия example_main от сборки интегрированный код вне окружения Simulink

  • Метод Вызова функции: Допускающие повторное использование функции для ПИ-контроллеров

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

            Function    Data
Algorithms  800 bytes   308 bytes
Utilities   592 bytes   40 bytes
Full        1392 bytes  348 bytes

Эта настройка использует только 56% памяти данных от первой настройки: 308 байтов вместо 549 байтов. Эта настройка также использует 68% функциональной памяти: 800 байтов вместо 1 172 байтов. Для этой системы, с помощью одинарной точности вместо двойной точности не влияет на точность алгоритма управления, таким образом, можно использовать эту настройку, чтобы достигнуть более эффективного кода.

Настройка 3: функции одноразового использования с одним типом данных

  • Исходные файлы: PCG_Eval_File_3.zip

  • Тип данных: Все одиночные игры

  • Включенные Данные: проект включает все данные, которых требует сборка (включая данные, объявленные как extern: pos_rqst, fbk_1, и fbk_2)

  • Основная Функция: модифицированная версия example_main от сборки интегрированный код вне окружения Simulink

  • Метод Вызова функции: функциональным интерфейсом является void void таким образом, обмен данными происходит через глобальные переменные

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

            Function    Data
Algorithms  948 bytes   348 bytes
Utilities   592 bytes   40 bytes
Full        1540 bytes  388 bytes

Эта настройка использует больше данных и функциональной памяти, чем предыдущая настройка.

Похожие темы