floatとdoubleの演算速度 その2

前にやったfloatとdoubleの演算速度比較エントリの訂正エントリになります。

たまたま見つけたC++プログラミング日記様のこのエントリ

「double型はfloat型より高速」といった説をたま見かけますが実際のところは同じ命令で処理されているため計算速度に違いはありません。ただし浮動小数点モデル/fp:preciseを使用した場合は単精度を精密に再現するため著しくパフォーマンスが低下します。

この/fp:preciseがVSではデフォルトで選択されるので、floatが遅くなっている、ということだそうです。

早速私も試してみた。


環境:
Core2Duo E6600(2.2GHz) / WinXP Home / VC++2010EE
単純ループ(10,000 * 10,000)で測定

前回との違いはVC++2008EE→VC++2010EEになっただけ。

浮動小数点モデル/fp:precise

対象 加算 減算 乗算 除算
float 382 378 463 1,597
double 126 125 211 1,347

浮動小数点モデル/fp:fast

対象 加算 減算 乗算 除算
float 126 130 212 210
double 126 126 210 212

すげぇ!なんだこれ。
floatとdoubleの差が無いっていうか、除算と乗算が同じな事に驚いた。

さっきの記事にあるように、メモリアクセスの点でfloatのほうが有利であるらしいし、DirectXでゲーム作る際はよほど精度が必要でないかぎりdoubleの出番は無いってことですね。
前回のエントリとは逆の結末です。
でも悩む必要がなくなってよかった。

C++プログラミング日記様の記事は色々勉強になるので今後も参考にさせてもらおう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

認証のために問題を解いて下さい * Time limit is exhausted. Please reload CAPTCHA.