移転しました http://please-sleep.cou929.nu/20091208.html
移転しました http://please-sleep.cou929.nu/20091208.html
前にやった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は最適化すると凄く速くなる。なんだこれ。 floatのほうが速いって主張する人は最適化しない場合のを見ていて、doubleのほうが速い派は最適化後の値をみて主張してる訳か? floatが遅いというより、最適化するとdoubleが速くなるって感じだね。 どこかで「浮動小数演算用レジスタがdoubleだから、floatだと一旦キャストしたりしてコストが掛かるから遅い」みたいなことが書かれてたりするけど、この結果だけ見ると「doubleは浮動小数演算用レジスタが有効に使われるようになる」って言った方がしっくり来る。実際どうだか分かんないけどね。 ディスアセンブルすればもう少し解るかもしれないけど、そこまでする元気は無い。 float派も一応間違いではないけども、実際にリリースする時は最適化したものを出すわけなので、とりあえずfloatよりdou
「Gentoo : Intel Pentium 4 Computer Language Shootout」というプログラミング言語のベンチマークをしているサイトがあります。 このサイトでは、Linux入りPentium 4マシンを使って様々な言語で書いたプログラムのベンチマークを公開しています。 今回はC言語とC++,C#,Javaを比べてみました。 あと、その他言語もそれぞれ比べてみました。 グラフの白い棒がCPU時間を表しています。 白い棒が延びている側の方が実行速度が速い事を現しています。 黒い棒はメモリ利用量を表しています。 黒い棒が延びている側の方が省メモリです。 なお、以下のグラフは特定のベンチマークの結果だけであり、言語自体の優劣ではないので、念のため。。。 その他の言語の組み合わせも色々できるので興味のある方は試してみてください。 C言語 (gcc) vs C++ (g++
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く