Проверьте, что выводит ваш компилятор, он, вероятно, уже "оптимален". Например,
float foo(float a, float b)
{
return (a>b?a:b);
}
Скомпилировано с GCC 4.5, -O3
, генерирует эту сборку на x86_64:
Disassembly of section .text:
0000000000000000 <foo>:
0: f3 0f 5f c1 maxss %xmm1,%xmm0
4: c3 retq
т.е. компилятор знает много о наборе инструкций, на который вы нацелены, и семантике вашего кода. Пусть это сделает свое дело.