トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     計算の負荷について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ASAHI
Åê¹ÆNo.9665
投稿日時: 2004-8-3 16:34
半人前
居住地: 神奈川
投稿: 34
使用環境:
WinXP,2k FlashMX
計算の負荷について
お世話になってます。

アクションスクリプトではデータタイプが64Bitだそうです。
引用:
ソース
<中盤あたりより・・・・>
.NET 小数データタイプは 96 ビットですが、
ActionScript 小数データタイプは 64 ビットです。


たとえばこのような、リアルタイムに計算を行い、配置を制御する
ような場合においては計算の負荷が大事になると思うのですが、
Flashの仕様によって64Bitもの桁数で計算されているということです
よね?

そこで質問です。
xという値に対して、10のn乗をxに掛け、
整数で四捨五入して、10のn乗で割れば
少数点第n位で丸められると思うのですが、
このスクリプトを挿入して計算する場合と、64ビットのまま
計算する場合ではどちらが負荷が軽いのでしょうか?
その判断をうまく出来る方法を知りたいのです。

また、もっと簡単に負荷を軽く(桁を丸められる)
出来る方法をご存知の方がいらっしゃいましたら、
どうぞご指導願います。


----------------
ASAHI
RHYTHMAGIC

ゲスト
Åê¹ÆNo.9666
投稿日時: 2004-8-3 16:55
Re: 計算の負荷について
何回か繰り返して時間を計測してはいかがでしょうか。付加って言っている部分の意味がいまいちわからないのですが、CPUを使用しないって意味か、メモリを圧迫しないという意味か、単に処理時間が早いというかによって回答も違うと思います。
何回か繰り返すというのは時間計測で差が出る程度の回数を言っています
野中文雄
Åê¹Æ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さんは書きました:
たとえばこのような、リアルタイムに計算を行い、配置を制御する
ような場合においては計算の負荷が大事になると思うのですが、
Flashの仕様によって64Bitもの桁数で計算されているということです
よね?

そこで質問です。
xという値に対して、10のn乗をxに掛け、
整数で四捨五入して、10のn乗で割れば
少数点第n位で丸められると思うのですが、
このスクリプトを挿入して計算する場合と、64ビットのまま
計算する場合ではどちらが負荷が軽いのでしょうか?

スクリプトで処理負荷が高いのは、XMLとかストリングの扱いなどです。純粋な数値計算は、それほど負荷が高いとも思えません。

むしろ、上記サンプルのような場合には、描画処理の方がずっと負荷は高いのではないでしょうか。
引用:
また、もっと簡単に負荷を軽く(桁を丸められる)
出来る方法をご存知の方がいらっしゃいましたら、
どうぞご指導願います。


----------------
 

ASAHI
Åê¹ÆNo.9677
投稿日時: 2004-8-4 1:09
半人前
居住地: 神奈川
投稿: 34
使用環境:
WinXP,2k FlashMX
Re: 計算の負荷について
ご返信ありがとうございます。

>>EARTHDAWNさん
負荷というのは、処理時間が早いという意味で使ったつもりでした。
抽象的な言葉で失礼いたしました。
タイマーを設置して、ループ毎の時間を計測するわけですね。
確かにそれならわかりそうです。ありがとうございます。

引用:
何回か繰り返して時間を計測してはいかがでしょうか。
付加って言っている部分の意味がいまいちわからないのですが、
CPUを使用しないって意味か、メモリを圧迫しないという意味か、
単に処理時間が早いというかによって回答も違うと思います。


>>野中さん
なるほど、XMLやストリングの方が処理に
時間がかかるわけですね?。勉強になります。
まだまだ勉強が必要そうです。。。

引用:
ActionScriptではランタイム(SWF)実行時のデータ型は
指定できません(ActionScript 2.0の型指定は書出し時のチェックのみです)。
四捨五入をしても、計算の桁数は変わらないでしょう。
まして、2進法のコンピュータに10進数で丸めた数字を渡しても、意味はないように思えます。
スクリプトで処理負荷が高いのは、XMLとかストリングの扱いなどです。
純粋な数値計算は、それほど負荷が高いとも思えません。


確かに、言われて考えてみると、
描画処理の方がずっと負荷がかかりますよね。。。

引用:
むしろ、上記サンプルのような場合には、
描画処理の方がずっと負荷は高いのではないでしょうか。


また一つFLASHの特徴を勉強することが出来ました。
ありがとうございました。


----------------
ASAHI
RHYTHMAGIC

ゲスト
Åê¹Æ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のストリング処理はめちゃ遅いです。
ゲスト
Åê¹Æ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);

ASAHI
Åê¹ÆNo.9862
投稿日時: 2004-8-14 15:01
半人前
居住地: 神奈川
投稿: 34
使用環境:
WinXP,2k FlashMX
Re: 計算の負荷について
>>VOSTOKさん
返信ありがとうございました。
ビットシフトとは、こんな方法もあるのですね!

返信下さった皆様の意見をまとめて
比較を行うFLASHサンプルを作りました。

これからいえることは
1.計算は四捨五入を行わずに64ビット(有効数字15桁)で
  計算するのが計算時間は早い。
2.四捨五入はMath.round()よりもビットシフトを
  使うと計算時間は早い。
3.スクリプトは短いほうが計算時間は早い。

でしょうか。書いてみると、結構当たり前のことですが、今後の
参考になればと思います。
ではでは


----------------
ASAHI
RHYTHMAGIC

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops