Progression FrameworkのForLoopの限界は何周か?

  • このエントリーをはてなブックマークに追加
  • 0

以前作ったWhileLoopコマンドを試していて気づいたんだが、ループの限界が意外と早い。すぐにスタックオーバーフローに見舞われるため、ループ内で実行するコマンドを時間のかかるコマンド(DoTweenerで1秒くらいかけて移動とか)にしないと、一瞬にして限界が来てエラー発生と言うことになる。
勿論、これは既存のForLoopコマンドにも言える筈なので、試しにループ何周までいけるか実験してみた。
つまり、

ActionScript

  1. new ForLoop(<ループ数>,<コマンド>);

の、ループ数を何処まで増やせるのか?と言うことだ。
多分、環境依存なのだろうが。

ということで実験の結果、
大体400にギリギリで届かないくらい
ではないかと言う事がわかった。俺が試しに作ってみたプログラムだと、390とかその位だった。
予想以上に早い。
ちなみに、その時のコードはこんな感じ

ActionScript

  1. new ForLoop(400,new Empty());

ループ内のコマンドがもっと時間のかかるものだったらもう少しいけるのかもしれないが、時間がかかるので実験はしない。
一瞬で終わるコマンドをループすると、400程度と言うのが目安だろう。
もしくは、コマンド内でイベント発生するもの(DoTweenerとか、LoadURLとか)だと、ForLoopの中でコマンドを実行してる関数と、中のコマンドの実行部分の関数が上手く折り合ってスタックオーバーフローが起きない可能性もある。
スタックオーバーフローは、関数内から他の関数を読んだ時に増えて、呼ばれた関数が終わると減るから、適度に関数が終わらないとすぐ満杯になるんだよね、多分。

まぁ、ちょっとしたループにはForLoopを使っても良いけど、数が多少多くなると厳しいので他の手を考えろと言う事か。
というか、元々for文の添え字も使えないし、そんなグルグル回すことを考慮してないのかも。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク