タグ

ブックマーク / lazyattribute.sakuratan.com (2)

  • floatとdoubleの演算速度 その2 | LazyAttribute

    前にやった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:pre

  • floatとdoubleの演算速度 | LazyAttribute

    floatは最適化前と後で変化ないのに、doubleは最適化すると凄く速くなる。なんだこれ。 floatのほうが速いって主張する人は最適化しない場合のを見ていて、doubleのほうが速い派は最適化後の値をみて主張してる訳か? floatが遅いというより、最適化するとdoubleが速くなるって感じだね。 どこかで「浮動小数演算用レジスタがdoubleだから、floatだと一旦キャストしたりしてコストが掛かるから遅い」みたいなことが書かれてたりするけど、この結果だけ見ると「doubleは浮動小数演算用レジスタが有効に使われるようになる」って言った方がしっくり来る。実際どうだか分かんないけどね。 ディスアセンブルすればもう少し解るかもしれないけど、そこまでする元気は無い。 float派も一応間違いではないけども、実際にリリースする時は最適化したものを出すわけなので、とりあえずfloatよりdou

  • 1