メイン コーダーズルーム【スクリプト系】 for文は重たい? | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
長谷川 | Åê¹ÆNo.14344 投稿日時: 2005-1-21 4:43 |
常連 居住地: 岐阜県 投稿: 84
使用環境:
OS[Windows XP] ブラウザ[IE] [Flash MX] [Dreamweaver MX] [Fireworks MX] [FreeHand MX] |
for文は重たい? 最近処理をまとめるためにfor文を使うようになってきたのですが、数行の処理であれば問題なく動くのですが多くなるとあまりの重たさに警告が出て再生が中断されます。for文と普通に書くのではかなり動作の重たさに違いが出るのでしょうか?
例えばこういうことです。 count+=1; count+=2; count+=3; の処理を for(X=1;X<=3;X++){ count+=X; } のようにfor文にまとめた時です。(この作例は簡単構造なので問題無く動いています) |
森 なおき | Åê¹ÆNo.14345 投稿日時: 2005-1-21 7:28 |
モデレータ 居住地: 福岡(心は大阪) 投稿: 527
使用環境:
:MacOSX10.6.8 :FlashCS5.5 |
Re: for文は重たい? なおきです。
forの処理中は割り込み処理ができません。 ですので、あまりに時間が掛かると判断された処理の場合は そのようなメッセージが出るケースがあります。 どの程度の処理をされているのかわかりませんが、 列挙するのと処理そのものの時間に大差はないと思います。 むしろ、その条件を満たさない状況になっていないかを チェックしてみた方がいいと思います。 存外に間違ってたりしますので(^^; なお、FlashPlayer5以降だと15秒以上処理が続くと メッセージが出るようです。
|
空野大二郎 | Åê¹ÆNo.14346 投稿日時: 2005-1-21 8:12 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: for文は重たい? まいど。
for分やwhile分のループ処理についての過去ログが参考になると 考えられます。 「ものすごーく時間のかかる処理」 for分で警告が出るということは、CPU負荷が過大にかかる ということです。それを避けるためにも、ループ回数を少なくする デザイン計画も必要だと考えられます。
|
長谷川 | Åê¹ÆNo.14378 投稿日時: 2005-1-21 22:32 |
常連 居住地: 岐阜県 投稿: 84
使用環境:
OS[Windows XP] ブラウザ[IE] [Flash MX] [Dreamweaver MX] [Fireworks MX] [FreeHand MX] |
Re: for文は重たい? 返信ありがとうございます。今日学校の先生に聞いてみたところ同じような回答が返ってきたのでなるほどっと思いました。今まで通りfor文を使わずひたすら羅列してたほうが一番パソコンに優しいみたいですね。
Flash上の仕様が少し分かった気がするので良かったと思います。色々な事を教えて頂きありがとうございました。 |
森 巧尚 | Åê¹ÆNo.14379 投稿日時: 2005-1-21 23:05 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: for文は重たい? 引用:
今まで通りfor文を使わずひたすら羅列してたほうが一番パソコンに優しいみたいですね。 正確に言うと、for文が悪いわけじゃないですよ。「一度にものすごくたくさんの処理を行うこと」が問題で、 それが15秒以上もかかってしまうときにメッセージが出るわけです。 もしとても多くの処理しなければいけない場合は、1フレームで一気に行ってしまわないで、 途中で一回解放してイベント処理に戻してやるような設計にすればいいわけです。 「ムービー内のスクリプトが原因でMacromedia Flash Player 7の実行速度が遅く・・・」 for文の中身が軽ければ、普通のループぐらいは大抵なんともないですよ。 ただ、変数処理にバグがあって、
のような構造になっていると延々と処理し続けることになってエラーが出ますが、それはバグですしね。
|
ひろゆき | Åê¹ÆNo.14383 投稿日時: 2005-1-22 1:57 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: for文は重たい? 森さんも書かれていますが、for文だから重くなるというのではなくて、
「for文で書けば、数行でたくさんの処理を容易にさせることができるので、 大した処理をさせていないようなつもりになる」ことが問題なのではないでしょうか? つまり、
実際に時間がかかっても、そりゃそうだ。と思うわけですが、 これを、
まるで、for文を使ったので重くなったかのような錯覚に陥っているのではないかと。 実際、count+=1; から count+=1000; までを順に書いた処理と for文で書いた処理で試してみてはいかがですか? 比較をするなら、同じ処理をさせないと。 for文で処理した場合、重く感じるでしょうね。 前者の処理では、途中でスクリプトを書くことすらやめちゃいますから、 感じることすらできないかも。 軽い重いを感じる機会に遭遇しやすいのは、後者の処理の方でしょう。 |
森 なおき | Åê¹ÆNo.14384 投稿日時: 2005-1-22 2:18 |
モデレータ 居住地: 福岡(心は大阪) 投稿: 527
使用環境:
:MacOSX10.6.8 :FlashCS5.5 |
Re: for文は重たい? 引用:
すんません。これってX=1としてるから 条件をいつまでも満たさないだけでは? なんか勘違いしてますでしょうか?
|
森 巧尚 | Åê¹ÆNo.14385 投稿日時: 2005-1-22 2:37 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: for文は重たい? 引用:
そうです。わざと条件をいつまでも満たさないようにして、エラーが必ず出るようにしている「よくあるバグの例」ですよ。 ループの内側がこんな短ければすぐ気がつきますが、長い場合ついうっかり 「ループ用の変数なのに、別の処理に使ってしまっていてループが終わらなくなる」 ということが起こります。たいしたループじゃないつもりなのにいつまでたっても 終わらないということがあるよという例です。 for文を使うときの注意点ですね。
|
森 なおき | Åê¹ÆNo.14386 投稿日時: 2005-1-22 2:40 |
モデレータ 居住地: 福岡(心は大阪) 投稿: 527
使用環境:
:MacOSX10.6.8 :FlashCS5.5 |
Re: for文は重たい? ああ、バグというのはプログラムした側のミスという意味での
バグですね。了解しました(^^;
|
空野大二郎 | Åê¹ÆNo.14388 投稿日時: 2005-1-22 3:41 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: for文は重たい? まいど。
連番スクリプト生成関数を作れば、われわれでも確認できますよ。 1:_rootの1フレーム目、フレームスクリプトに記述
2:trace()関数で出力されたスクリプトをすべて選択し、貼り付ける。 count+=1; count+=2; | count+=1000; (出力では「すべてを選択」メニューがないので、先頭 左クリック&行末[shift]+左クリックですべて選択しましょう。) 引用: ひろゆきさんは書きました: 50万回くらいのループだとはっきりと差が出るかもしれませんが、 「出力パネル」の最大桁数は1万行なので、サンプルの「スタート 直後の百桁」、「最大の百桁」を書き換え、徐々にふやして差を 確認してください。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |