Оптимизируйте код путем переупорядочивания коммутируемых операндов

В этом примере показано, как переупорядочить коммутируемые операнды, чтобы сделать выражения рекурсивными влево. Левая - рекурсивное переупорядочивание сохраняет пространство стека в памяти. Эта оптимизация повышает эффективность кода.

Пример модели

Чтобы переупорядочить коммутируемые операнды, создайте эту модель и назовите ее operand_order. Выходной сигнал является результатом умножения сигнала от блока Inport In1 по сумме сигналов от блоков Inport In2 и In3.

Сгенерируйте код

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На вкладке Code Style выберите параметр Preserve operand order in expression.

  2. Сгенерируйте код для модели.

В operand_order.c файл, operand_order_step функция содержит этот код:

operand_order_Y.Out1 = operand_order_U.In1 * (operand_order_U.In2 +
    operand_order_U.In3);

Генератор кода сохраняет заданный порядок выражения в модели, что увеличивает читаемость кода для трассируемости кода.

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

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На вкладке Code Style очистите параметр Preserve operand order in expression.

  2. Сгенерируйте код для модели.

В operand_order.c файл, operand_order_step функция содержит этот код:

operand_order_Y.Out1 = (operand_order_U.In2 + operand_order_U.In3) *
    operand_order_U.In1;

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

Похожие темы