Если вы используете 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++ может сгенерировать, умножают инструкции.