タグ

速度に関するSnowCaitのブックマーク (3)

  • x86でdoubleがfloatより速いかどうかを検証してみた - Qiita

    昔話 それは昔々のこと。 x86には浮動小数点演算を行う手段がなく、外付けの浮動小数点演算ユニットを接続するという手法で、浮動小数点演算を実現していたのであった。 x87と呼ばれたそれはとてもエクセレントなシステムで…という話はwikipediaに譲ろう。 https://ja.wikipedia.org/wiki/Intel_8087 重要なのは、x87が内部表現として80bitの拡張倍精度を使っている、ということ。 これのおかげで、x87においては、確かにdoubleのほうが速かった (floatだとdoubleへのキャストコストが発生するため) 嘘だろそれ。ASM見たら別にキャストとかしてなかったわ。 どっちかというと丸めの影響で精度が異なることのほうが重要だわ。 改めて調べてみると、doubleが速いとされている資料についてはあんまりないことに気付く。 (同等としている資料はher

    x86でdoubleがfloatより速いかどうかを検証してみた - Qiita
  • (修正)float型とdouble型を比較した場合、常にfloatが速いと思ってはダメらしい - 強火で進め

    すみません、以前のプログラムにポカがありました 以前、以下のエントリーを書きました。 float型とdouble型を比較した場合、常にfloatが速いと思ってはダメらしい - 強火で進め http://d.hatena.ne.jp/nakamura001/20090226/1235641233 そして今回、この速度差がどこから来てるのかアセンブリレベルで検証しようと色々と前回のプログラムを見直していたところ大ポカをやらかしている事に気がつきました。 具体的には以下の様な部分です。 NSLog(@"double : time=%f\tval=%f", elapsedTime, floatTotal); こちら double での計算結果なので来でればここで指定するのは floatTotal ではなく doubleTotal です。 このようなポカをやらかしたせいで doubleTotal

    (修正)float型とdouble型を比較した場合、常にfloatが速いと思ってはダメらしい - 強火で進め
  • Cプログラミング診断室/キャストが好き/float型対double型

    ■float型は遅い■ この人は、どうもdouble型を嫌っているように思えます。可能な限りfloat型で計算しようとし ているようです。やはり、double型より、float型の方が高速に違いないと思い込んでしまってい るようです。 結論から言うと、ほとんどのCでは、float型よりdouble型で計算した方が数倍高速になります。 例えば、今私がこの原稿を書いているコンピュータ(SPARCstation IPX)で、 r += 0.1 を計算させ ると、rがfloat型だと0.36μ秒ですが、double型だと0.11μ秒になります。 不思議に思われる方も多いと思います。もしあなたがアセンブラを理解できるのでしたら、簡単 な数行のプログラムを組んで、double型とfloat型のときのコンパイルされ方の違いを調べてみる と良いでしょう。 ここでは、アセンブラ・ソースを直接眺めながら説明す

  • 1