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しか使わないので競プロには関係ないですね。
RUPC2017 参加記
RUPC2017に参加したので、その参加記です。
続きを読む