Если вы используете Embedded Coder® чтобы сгенерировать код C/C + + из MATLAB® код, можно включить оптимизацию, которая упрощает индексацию массивов в циклах в сгенерированном коде. Когда это возможно, для индексов массива в циклах, эта оптимизация заменяет операции умножения на операции добавления. Операции умножения могут быть дорогими. Эта оптимизация, называемая снижением прочности, полезна, когда компилятор C/C + + на целевой платформе не оптимизирует индексацию массива.
Вот код, сгенерированный без оптимизации:
for (i = 0; i < 10; i++) { z[5 * (1 + i) - 1] = x[5 * (1 + i)]; }
Вот код, сгенерированный с оптимизацией:
for (b_i = 0; b_i < 10; b_i++) { z[i + 4] = x[i + 5]; i += 5; }
По умолчанию оптимизация снижения прочности отключена. Чтобы включить его:
В командной строке установите параметр объекта строения EnableStrengthReduction
на true
.
В приложении MATLAB Coder™, настройках сборки проекта, на вкладке All Settings, установите Simplify array indexing на Yes
.
Даже когда оптимизация заменяет операции умножения в сгенерированном коде, возможно, что компилятор C/C + + может сгенерировать команды умножения.