exponenta event banner

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

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

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

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

Создать код

  1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На вкладке Стиль кода выберите параметр Сохранить порядок операндов в выражении.

  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). На вкладке Стиль кода снимите флажок Сохранить порядок операндов в выражении.

  2. Создайте код для модели.

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

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

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

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