doubleとfloatの計算速度の話

C言語ではdouble型とfloat型の計算速度に違いがあることを知ったので、その話です。

 

float型の方が速い?

double型は64bitでfloat型は32bitなのだから、普通は精度の低いfloat型の計算の方が速そうな気がしますが、実はdouble型の方が少し速いみたいです。

ならintとlongならlongの方が速いかと言うと、そういうわけではなく普通にintの方が高速です。

 

なぜdoubleの方が速いのか

理由はCPUの構造にあるみたいです。

どうもCPUに乗っている浮動小数点演算ユニットは

double用に作られているので、floatで計算したい場合は1度doubleにキャストして計算した後に再度floatにキャストする必要があるらしく、結果としてdoubleで計算した方が速くなります。

 

 

まあ競プロでは問題になるような差ではないですし、そもそも基本的にdoubleしか使わないので競プロには関係ないですね。