C/C++ゲーム製作総合スレッド Part5at GAMEDEVC/C++ゲーム製作総合スレッド Part5 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト359:名前は開発中のものです。 14/03/11 23:13:25.82 P/1Z0pOf.net 平方根なんてほんとにCPU命令にあるのかと思って調べたら本当にあるんだな http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf http://topsecret.hpc.co 360:.jp/wiki/index.php/%E5%89%B2%E3%82%8A%E7%AE%97%E3%81%AF%E9%81%85%E3%81%84 しかも割り算一回分レベルの速さ 割り算も遅いので遅いと言えば遅いんだろうけど、これならそれほど頑張って避けなくてもいい気もするね 361:名前は開発中のものです。 14/03/12 10:35:51.84 DWahuZKR.net int i; double dSqrt, x, y, z; long T, E; x = y = z = 1.0; T = clock(); for (i = 0; i<100000000; i++){ dSqrt = sqrt(pow(x, 2.0) + pow(y, 2.0) + pow(z, 2.0)); } E = clock() - T; printf("√( x^2 + y^2 + z^2 ) = %1.5f [%1.5f] sec\n", (float)dSqrt, (float)E / CLOCKS_PER_SEC); T = clock(); for (i = 0; i<100000000; i++){ dSqrt = sqrt(sqrt(pow(x, 2.0) + pow(y, 2.0)) + pow(z, 2.0)); } E = clock() - T; printf("(√(√(x^2 + y^2) + z^2) = %1.5f [%1.5f] sec\n", (float)dSqrt, (float)E / CLOCKS_PER_SEC); getchar(); return 0; 実行結果 √( x^2 + y^2 + z^2 ) = 1.73205 [0.60800] sec (√(√(x^2 + y^2) + z^2) = 1.55377 [1.18600] sec 計算結果はゲームで使うなら誤差の範囲かな? 単純に sqrt 2回使えばほぼ 2倍の時間掛かるんで衝突判定するオブジェクトの数に拠りけり 秒間1億に近いから他の処理の重さと併せて考慮する感じだと思う 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch