Будет ли компилятор C/C++ оптимизировать код, повторно используя результат недавно вычисленной функции?C++

Программы на C++. Форум разработчиков
Anonymous
Будет ли компилятор C/C++ оптимизировать код, повторно используя результат недавно вычисленной функции?

Сообщение Anonymous »

Предположим, у меня есть функция double F(double x), и для этого примера предположим, что вызовы F являются дорогостоящими.

Предположим, я пишу функцию f, которая вычисляет квадратный корень из F:

Код: Выделить всё

double f(double x){
return sqrt(F(x));
}
и в третьей функции sum я вычисляю сумму f и F:

Код: Выделить всё

double sum(double x){
return F(x) + f(x);
}
Поскольку я хочу свести к минимуму вызовы F, приведенный выше код неэффективен по сравнению, например, с

Код: Выделить всё

double sum_2(double x){
double y = F(x);
return y + sqrt(y);
}
Но поскольку я ленив, или глуп, или хочу сделать свой код максимально понятным, вместо этого я выбрал первое определение.

Сможет ли компилятор C/C++ оптимизировать мой код, осознав, что значение F(x) можно повторно использовать для вычисления f(x), как это делается в sum_2?

Большое спасибо.

Подробнее здесь: https://stackoverflow.com/questions/554 ... unction-re

Вернуться в «C++»