exponenta event banner

Повторное использование выходных данных глобального блока в сгенерированном коде

Уменьшите потребление ПЗУ и ОЗУ и копирование данных и увеличьте скорость выполнения генерируемого кода. Настройте генератор кода для повторного использования глобальных переменных, выбрав параметр конфигурации модели Reuse global block outputs.

Пример

В окне команд введите rtwdemo_reuse_global.

Создание кода без оптимизации

  1. В диалоговом окне Configuration Parameters убедитесь, что выбран параметр Signal storage reuse.

  2. Снимите флажок «Повторно использовать выходные данные глобального блока» и нажмите «Применить».

  3. На панели «Создание кода» > «Отчет» выберите «Генерировать статические метрики кода».

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

Нажмите Ctrl + B, чтобы создать код.

### Starting build procedure for: rtwdemo_reuse_global
### Successful completion of build procedure for: rtwdemo_reuse_global

Build Summary

Top model targets built:

Model                 Action                       Rebuild Reason                                    
=====================================================================================================
rtwdemo_reuse_global  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 5.8287s

Просмотр созданного кода без оптимизации. Вот часть rtwdemo_reuse_global.c.

/* Model step function */
void rtwdemo_reuse_global_step(void)
{
  /* Sum: '<Root>/Sum' incorporates:
   *  Delay: '<Root>/Delay'
   *  Inport: '<Root>/In1'
   */
  rtDW.Delay_DSTATE += rtU.In1;

  /* Outport: '<Root>/Out1' incorporates:
   *  Delay: '<Root>/Delay'
   */
  rtY.Out1 = rtDW.Delay_DSTATE;
}

Созданный код содержит копию данных в глобальной переменной. rtDW.Delay_DSTATE. Откройте отчет о показателях статического кода. Общее число операций чтения и записи для глобальных переменных - 8. Общий размер составляет 32 байта.

Включить оптимизацию и создать код

  1. В диалоговом окне «Параметры конфигурации» выберите «Повторное использование выходных данных глобальных блоков» и нажмите «Применить».

  2. Создать код.

  3. Просмотр созданного кода с оптимизацией. Вот часть rtwdemo_reuse_global.c.

### Starting build procedure for: rtwdemo_reuse_global
### Successful completion of build procedure for: rtwdemo_reuse_global

Build Summary

Top model targets built:

Model                 Action                       Rebuild Reason                   
====================================================================================
rtwdemo_reuse_global  Code generated and compiled  Generated code was out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 6.132s

/* Model step function */
void rtwdemo_reuse_global_step(void)
{
  /* Sum: '<Root>/Sum' incorporates:
   *  Delay: '<Root>/Delay'
   *  Inport: '<Root>/In1'
   */
  rtY.Out1 += rtU.In1;
}

Генератор кода устраняет копию данных, сокращает две инструкции до одной инструкции и три глобальные переменные до двух глобальных переменных.

Откройте отчет о показателях статического кода. Для глобальных переменных эта оптимизация уменьшает общее количество операций чтения и записи для глобальных переменных с 8 до 5 и общий размер с 32 до 24 байт.

См. также

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