2008/07/16

 ActionScript Thread Library 1.0

[ AIR ]

yossyさん力作の、「そうめん」こと、ActionScript Thread Library 1.0をいじってみました。

基本的な動作原理と実装はアルファバージョンからあまり変わっていない&大幅に使い易くなっているので、すぐに理解できました。

基本動作原理は、フレーム周期のイベントをトリガーにThreadを動作させる疑似マルチスレッドなライブラリーとなっております(下図)。

フレームレートが24fpsの場合は、42msecの間に各Threadの動作を完了させないと、例えば、アニメーションを実行している場合などはフレーム落ちが発生することになりますので、処理を分割するなどして、うまくこの範囲に全ての処理を収めなければなりません。


しかし、Threadの実行時間を極端に短くしてしまうと、次のフレーム同期のタイミングまでアイドル時間が発生してしまい、もったいないことになります。

なので、なるべく効率よく「そうめん」を動かすには、この手のチューニングが必要になります(以下は最適化したケースのイメージ)。

しかしながら、実際にチューニングするには何らかのプロファイラ的なツールが必要となります。

と言うことで前置きが長くなりましたが、「そうめん」にちょっとした拡張を施し、LocalConnectionを張ることで、「そうめん」を実行中のアプリケーションのThreadの実行状況をモニターできるAIRアプリを作ってみました。


上図では、まだ各Threadの処理に余裕があり、無駄なアイドル時間(nop)が発生していることがわかります。

そこで、各Threadにもう少し重い処理を実行させ、最適化を行ったのが以下です。

まだ、ちょっと動作が怪しいところがありますが、完成度を高めたらSpark Projectの方にコミットしようと思います。