Предположим, мы определили const
или constexpr
, и мы несколько раз выполняем простой арифметический оператор, а также переменные и вызовы функций не будут выражать или возвращать константы .
#define NU = 3; //Macro or
const int NU = 3 // general declaration or constexpr
auto NU = []()constexpr -> int { return 3;}
int result = 0;
#Approach one -> const NU on left side of the operator right side could be function call or a function parameter
for(int i = 0; i< SOME_MAX; ++i) result = NU * foo(); // function call or
for(int i = 0; i< SOME_MAX; ++i) result = NU * var; // variable
#Approach two -> const NU on Right side of the operator Left side could be function call or a function parameter
for(int i = 0; i< SOME_MAX; ++i) result = foo() * NU ;// function call or
for(int i = 0; i< SOME_MAX; ++i) result = var * NU; // variable
Какой подход будет генерировать оптимизированную сборку -> машинный код?
Будет ли постоянный операнд на LHS или RHS относительно арифметического оператора влиять на оптимизацию или производительность ?
Примечание. Здесь я использовал его для представления идеи, которая у меня есть, прирост производительности или неэффективность могут быть незначительными, но, предположим, набор сложных математических операций с использованием набора констант.
Спасибо.