При использовании 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™ на вкладке «Все параметры» задайте для параметра «Упростить индексирование массива» значение Yes.
Даже когда оптимизация заменяет операции умножения в сгенерированном коде, возможно, что компилятор C/C + + может генерировать команды умножения.