浮動小数点ユニットがないARMデバイス用にC++コードを最適化したいと思います。私の関数のほとんどは浮動小数点数を使用しており、それらを固定小数点に変更することを検討しています。
ARMデバイスの場合、本当の利点はありますか、それともコンパイラはこれを自分で行うのに十分賢いですか?
たとえば、これはARMデバイスでより効率的でしょうか
//unsigned char const* input
unsigned int a, b;
a= *input++ << 12;
b= *input++ << 12;
a*=1024; //0.25 shifted 12 bits
b*=1024; //0.25 shifted 12 bits
*output++ = (a+b) >> 24;
するより
float a,b;
a= *input++;
b= *input++;
a=a/4;
b=a/4;
*output++ = a+b;