掲示板一覧:[4 ゲーム開発・創作仲間募集(依頼先を探している方一覧)] [5 ゲーム・創作のお仕事募集(依頼を請け負っている方一覧)] (閉鎖:[1 初心者・質問] [2 ゲーム攻略] [3 ゲーム開発・創作の話題])
便利リンク1:[ふりーむ] [ゲーム制作ツール集(素材リンク集)] [素材ライブラリ]
便利リンク2:[イラスト投稿(サンプルやポートフォリオ用に)] [ふりーむプレミアムサービス(外部広告の削減を目指して取り組んでいます)]
下記掲示板は投稿の受付を終了しました(投稿できません)。一定期間後に公開も終了されます。2005年からご愛用頂きありがとうございました。なお、上記掲示板一覧の「4」「5」は現段階では「様子見」でしばらく投稿可能です。
便利リンク1:[ふりーむ] [ゲーム制作ツール集(素材リンク集)] [素材ライブラリ]
便利リンク2:[イラスト投稿(サンプルやポートフォリオ用に)] [ふりーむプレミアムサービス(外部広告の削減を目指して取り組んでいます)]
下記掲示板は投稿の受付を終了しました(投稿できません)。一定期間後に公開も終了されます。2005年からご愛用頂きありがとうございました。なお、上記掲示板一覧の「4」「5」は現段階では「様子見」でしばらく投稿可能です。

件名 | : Re: C言語のdoubleとfloat型 |
投稿日 | : 2007/04/01 13:59 |
投稿者 | : ヤマモト |
はじめまして、ヤマモトと申します。すでにクローズした質疑に横槍を入れるのが気がひけるのですが、失礼いたします。
float と double の速度差についてですが、以下のサンプルコードを試すと、条件によって、最大で3倍の差が出ました。
http://ymtkyk.sakura.ne.jp/other/float_double.cpp
ビルドには Visual C++ 2005 Express Edition を使用し、SSE2を有効にし、その他の最適化オプションも可能な限り速度優先にしています。
floatの方がdoubleより速度的に有利になる条件として、大きな配列を扱う場合があります。
この場合
1. メモリ操作の量自体が少なくてすむ
2. SIMDの処理効率が高い
3. キャッシュのヒット率が高い
という3つの理由によって高速化されることが期待できます。
配列が大きくない場合は、それほど速度差は出ないようです。
float と double の速度差についてですが、以下のサンプルコードを試すと、条件によって、最大で3倍の差が出ました。
http://ymtkyk.sakura.ne.jp/other/float_double.cpp
ビルドには Visual C++ 2005 Express Edition を使用し、SSE2を有効にし、その他の最適化オプションも可能な限り速度優先にしています。
floatの方がdoubleより速度的に有利になる条件として、大きな配列を扱う場合があります。
この場合
1. メモリ操作の量自体が少なくてすむ
2. SIMDの処理効率が高い
3. キャッシュのヒット率が高い
という3つの理由によって高速化されることが期待できます。
配列が大きくない場合は、それほど速度差は出ないようです。
件名 | : Re: C言語のdoubleとfloat型 |
投稿日 | : 2007/03/12 22:24 |
投稿者 | : てつ |
ご返答ありがとうございます。
これからも時々質問する事があると思うので
よろしくお願いします。
これからも時々質問する事があると思うので
よろしくお願いします。
件名 | : Re: C言語のdoubleとfloat型 |
投稿日 | : 2007/03/11 15:12 |
投稿者 | : SHI |
20年以上前のパソコンで開発するのならともかく今時そんなの体感できるほどの差は出ませんよ。
件名 | : Re: C言語のdoubleとfloat型 |
投稿日 | : 2007/03/11 00:21 |
投稿者 | : とおりすがる |
どちらが正しいか?で言えば,「両方正しい」です。
ソースを見ていないのでなんとも言えませんが、書いてある限りから推測するに、どちらもANSI Cで定められたとおりの型を用いていますから。
floatの使うビット幅は32ビットです。対してdoubleの使うビット幅は64ビットです。doubleの方が早い分、喰うメモリ量も大きいということです。
要するに、適材適所ってことですね。
サンプルコードレベルであれば、(表現したい数が表現できるなら)どちらを使っても問題ないと思います。
ソースを見ていないのでなんとも言えませんが、書いてある限りから推測するに、どちらもANSI Cで定められたとおりの型を用いていますから。
floatの使うビット幅は32ビットです。対してdoubleの使うビット幅は64ビットです。doubleの方が早い分、喰うメモリ量も大きいということです。
要するに、適材適所ってことですね。
サンプルコードレベルであれば、(表現したい数が表現できるなら)どちらを使っても問題ないと思います。
float型はまず使わない、みたいな事が書かれている
参考書があったりしますが、とある参考書にはfloat型
ばっかり使っているものもあります。
一体どちらが正しいのでしょうか?ご存知の方、おりましたら
ご教示願います。