#include
int foo(int x) {
return x + 1;
}
int main() {
int x = 0;
std::cin >> x;
std::cout << foo(x + 1) << std::endl;
std::cout << foo(++x) << std::endl;
}
Отключаем inline, всю остальную оптимизацию оставляем, смотрим дизассемблер:
std::cout << foo(x + 1) << std::endl;
00FB144B mov ecx,dword ptr [x]
00FB144E push dword ptr ds:[0FB3048h]
00FB1454 lea ecx,[ecx+1]
00FB1457 call foo (0FB1420h)
...
std::cout << foo(++x) << std::endl;
00FB1471 mov ecx,dword ptr [x]
00FB1474 push dword ptr ds:[0FB3048h]
00FB147A inc ecx
00FB147B mov dword ptr [x],ecx
00FB147E call foo (0FB1420h)
В первом случае три инструкции до вызова функции foo, во втором четыре. Вывод?
Вы не там пытаетесь оптимизировать. Как правило, причина медленной работы программы -- херовый алгоритм обработки данных. А ускорение такого херового алгоритма на несколько микросекунд, ничего не даст.