exponenta event banner

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

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

Сведения о модели примера и других примерах этой серии см. в разделе Подготовка модели алгоритма управления для генерации кода C.

Оценка кода

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

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

  • Доступ к данным из ОЗУ выполняется быстрее, чем доступ к данным из ПЗУ.

  • Исполняемые файлы и данные должны храниться в ПЗУ, поскольку ОЗУ не поддерживает данные между циклами питания.

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

Сведения о компиляторе

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

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

  • Версия: 5.5.1.1430

  • Целевой процессор: Power PC 565

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

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

  • Алгоритмы: код C, генерируемый на блок-схемах Simulink ®, а также функции определения данных

  • Утилиты: Функции, входящие в состав библиотеки Simulink ® Coder™

  • Полный: Сумма как алгоритма, так и утилит

Конфигурация параметров построения

В трех оценках в этом примере используется одна и та же конфигурация сборки. Freescale™ CodeWarrior ® был настроен для минимизации использования памяти и применения всех применимых оптимизаций.

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

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

  • Тип данных: Все двойники

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

  • Основная функция: Модифицированная версия example_main от создания интегрированного кода вне среды Simulink

  • Метод вызова функции: Многократно используемые функции для контроллеров PI

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

            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

  • Метод вызова функции: Многократно используемые функции для контроллеров PI

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

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

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

Конфигурация 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

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

Связанные темы