« プレスリーVSミイラ男 | Home | Adobe Motion Award »

Dec 152006

functionをネストさせると

キチンと検証はしていないのだけど、傾向としてなんとなく分かってきたのでメモ。
再帰処理などのときにfunctionをネストさせていくような記述を行う場合があるのだけど、そういう処理をすると計算負荷が高くなるケースがある。
これはプロパティを複数の演算ロジックに切り分けて操作していたりする場合などに良く用いるのだけど、演算部分を別関数化し、その関数を叩く親の関数の中でその演算結果を参照しプロパティを変更したりする場合。分かりやすいところでいうとtween classなどでよく用いられるRobertPaner等がこれに相当するかな?イメージとして関数のネストによって速度が低下するのは分かるのだけど、プロパティ操作は出来るだけ近い場所で行ったほうが軽いかなあと思ったりしたのだけど、どうも処理が分散することによる負荷の方が割高のようだ。下手すると2pfsぐらい速度が低下する場合がある。
これは演算を受け持つ関数の中から直接プロパティを変更させると速度低下は避けられる傾向にある。

この辺パッケージ化などを考えていると美しくない形にはなるのだけど、ただ速度低下を避けたい場合は考慮する必要があるかもしれない。AS3で書けばこの辺の計算負荷の問題はすぐに解決できるような気もするのだけど、まだAS3に移行してないのでとりあえずメモ。

***
んーー
でも、この辺同時にどれくらいの演算を平行で行っているか?とかそういう要素が絡むから一概にもいえないよなぁ・・。検証が難しいな。

Leave a comment

Search and Archives