メイン コーダーズルーム【スクリプト系】 計算の負荷について | 投稿するにはまず登録を |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ASAHI | Åê¹ÆNo.9862 投稿日時: 2004-8-14 15:01 |
半人前 居住地: 神奈川 投稿: 34
使用環境:
WinXP,2k FlashMX |
Re: 計算の負荷について >>VOSTOKさん
返信ありがとうございました。 ビットシフトとは、こんな方法もあるのですね! 返信下さった皆様の意見をまとめて 比較を行うFLASHサンプルを作りました。 これからいえることは 1.計算は四捨五入を行わずに64ビット(有効数字15桁)で 計算するのが計算時間は早い。 2.四捨五入はMath.round()よりもビットシフトを 使うと計算時間は早い。 3.スクリプトは短いほうが計算時間は早い。 でしょうか。書いてみると、結構当たり前のことですが、今後の 参考になればと思います。 ではでは
|
ゲスト | Åê¹ÆNo.9775 投稿日時: 2004-8-8 19:29 |
Re: 計算の負荷について すみません訂正します。オーバーフローする危険性がありました。
●小数点以下の四捨五入 a = 99.5; b = a * 2 + 1; c = b >> 1; trace(a + " -> " + c); ●切捨ての場合はなんらかのビット演算子を使えばいいようです。 a = 99.8; b = a | 0; trace(a + " -> " + b); |
|
ゲスト | Åê¹ÆNo.9774 投稿日時: 2004-8-8 19:11 |
Re: 計算の負荷について こんばんわ。
高速な四捨五入、切捨てにはビット演算子のシフト(">>")がありますよ。 これを使えば内部で32ビットのINT型に変換され、小数点が切り捨てられます。 四捨五入はこんな感じでやればいいのではないでしょうか。 a = 99.5; b = a * 1024 + 512; c = b >> 10; trace(a + " -> " + c); //"99.5 -> 100" が表示されます 実際に計測してないので分かんないのですがMath.round()を使うより演算(掛け算と足し算)は増えますが関数コールがなくなる分高速なはずです。(たぶん…) それから野中さんがおっしゃるようにFLASHのストリング処理はめちゃ遅いです。 |
|
ASAHI | Åê¹ÆNo.9677 投稿日時: 2004-8-4 1:09 |
半人前 居住地: 神奈川 投稿: 34
使用環境:
WinXP,2k FlashMX |
Re: 計算の負荷について ご返信ありがとうございます。
>>EARTHDAWNさん 負荷というのは、処理時間が早いという意味で使ったつもりでした。 抽象的な言葉で失礼いたしました。 タイマーを設置して、ループ毎の時間を計測するわけですね。 確かにそれならわかりそうです。ありがとうございます。 引用: 何回か繰り返して時間を計測してはいかがでしょうか。 >>野中さん なるほど、XMLやストリングの方が処理に 時間がかかるわけですね?。勉強になります。 まだまだ勉強が必要そうです。。。 引用: ActionScriptではランタイム(SWF)実行時のデータ型は 確かに、言われて考えてみると、 描画処理の方がずっと負荷がかかりますよね。。。 引用: むしろ、上記サンプルのような場合には、 また一つFLASHの特徴を勉強することが出来ました。 ありがとうございました。
|
野中文雄 | Åê¹ÆNo.9669 投稿日時: 2004-8-3 17:44 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 計算の負荷について ActionScriptではランタイム(SWF)実行時のデータ型は指定できません(ActionScript 2.0の型指定は書出し時のチェックのみです)。四捨五入をしても、計算の桁数は変わらないでしょう。まして、2進法のコンピュータに10進数で丸めた数字を渡しても、意味はないように思えます。
引用: ASAHIさんは書きました: スクリプトで処理負荷が高いのは、XMLとかストリングの扱いなどです。純粋な数値計算は、それほど負荷が高いとも思えません。 むしろ、上記サンプルのような場合には、描画処理の方がずっと負荷は高いのではないでしょうか。 引用: また、もっと簡単に負荷を軽く(桁を丸められる) |
ゲスト | Åê¹ÆNo.9666 投稿日時: 2004-8-3 16:55 |
Re: 計算の負荷について 何回か繰り返して時間を計測してはいかがでしょうか。付加って言っている部分の意味がいまいちわからないのですが、CPUを使用しないって意味か、メモリを圧迫しないという意味か、単に処理時間が早いというかによって回答も違うと思います。
何回か繰り返すというのは時間計測で差が出る程度の回数を言っています |
|
ASAHI | Åê¹ÆNo.9665 投稿日時: 2004-8-3 16:34 |
半人前 居住地: 神奈川 投稿: 34
使用環境:
WinXP,2k FlashMX |
計算の負荷について お世話になってます。
アクションスクリプトではデータタイプが64Bitだそうです。 引用: ソース たとえばこのような、リアルタイムに計算を行い、配置を制御する ような場合においては計算の負荷が大事になると思うのですが、 Flashの仕様によって64Bitもの桁数で計算されているということです よね? そこで質問です。 xという値に対して、10のn乗をxに掛け、 整数で四捨五入して、10のn乗で割れば 少数点第n位で丸められると思うのですが、 このスクリプトを挿入して計算する場合と、64ビットのまま 計算する場合ではどちらが負荷が軽いのでしょうか? その判断をうまく出来る方法を知りたいのです。 また、もっと簡単に負荷を軽く(桁を丸められる) 出来る方法をご存知の方がいらっしゃいましたら、 どうぞご指導願います。
|
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |