- 2008年2月15日 15:07
- ActionScript 3.0
今日は、前回に引き続き、AS3のチューニングのお話です。
昨日の記事で、addChild removeChild を連発するより
visible の true / false を連発するほうが10倍くらい早いという結果を
ぶちまけたわけですが、やはりそこは疑いたくなるのが人のサガでして
「removeChildしたほうが、描画速度的にもCPU的にも嬉しいんちゃうん?」
という、疑問が沸いてくるわけです。
というわけで、今日は実際にそのへんを試してみました。
昨日の記事で、addChild removeChild を連発するより
visible の true / false を連発するほうが10倍くらい早いという結果を
ぶちまけたわけですが、やはりそこは疑いたくなるのが人のサガでして
「removeChildしたほうが、描画速度的にもCPU的にも嬉しいんちゃうん?」
という、疑問が沸いてくるわけです。
というわけで、今日は実際にそのへんを試してみました。
とりあえずサクサクっとサンプルを作りました。
構造的には
毎フレーム x++ する少々複雑なシェイプを
常に表示される用1個(黒)と、表示が切り替えられる用800個(赤)を生成。
それらを操作できるように
addChild、removeChild、visible、invisible ボタンを作った。
↓こんな感じに。
それでは実験開始です。
参考までに実験環境は Windous XP
Core2Duo 1.60GHz 2GB RAM でやっとりますです。
黒いのが横に動いてます。
横に伸びてる赤いのは再描画領域です。
CPU使用率は平均18~25といったところでしょうか。
縦一列に一気に800個並べました
再描画領域もすさまじい事に
動作も一気に重くなりました・・・
CPUも平均35~40いってます。ディアルコアなんで50でヒィヒィいう感じです。
また軽い状態に戻りました
CPUも元に戻っています。
お!?removeChildと描画速度CPU共にほとんど変わらない!
描画領域もちゃんと消えてます。
というわけで結論・・・
非常に単純な条件ですので、絶対ではないですが
よっぽどの事が無いかぎり、visible = false でも良いっぽい。
ああ、これで今夜はぐっすり眠れる。
ちなみに実際見て見たい方のためにサンプルを置いておきます。
負荷かけるものなので、3段階で用意しました。
自分のPCの性能と相談してご覧下さい。
※PCがフリーズしても一切の責任は負いませんのであしからず。
■ 低負荷版 ( シェイプ 100個 )
■ 中負荷版 ( シェイプ 500個 )
■ 高負荷版 ( シェイプ 1000個 )
よーしチューニング、チューニングっと・・・
構造的には
毎フレーム x++ する少々複雑なシェイプを
常に表示される用1個(黒)と、表示が切り替えられる用800個(赤)を生成。
それらを操作できるように
addChild、removeChild、visible、invisible ボタンを作った。
↓こんな感じに。
それでは実験開始です。
参考までに実験環境は Windous XP
Core2Duo 1.60GHz 2GB RAM でやっとりますです。
■初期状態
横に伸びてる赤いのは再描画領域です。
CPU使用率は平均18~25といったところでしょうか。
■addChild 実行
再描画領域もすさまじい事に
動作も一気に重くなりました・・・
CPUも平均35~40いってます。ディアルコアなんで50でヒィヒィいう感じです。
■removeChild 実行
CPUも元に戻っています。
■addChild → invisible 実行
描画領域もちゃんと消えてます。
というわけで結論・・・
非常に単純な条件ですので、絶対ではないですが
よっぽどの事が無いかぎり、visible = false でも良いっぽい。
ああ、これで今夜はぐっすり眠れる。
ちなみに実際見て見たい方のためにサンプルを置いておきます。
負荷かけるものなので、3段階で用意しました。
自分のPCの性能と相談してご覧下さい。
※PCがフリーズしても一切の責任は負いませんのであしからず。
■ 低負荷版 ( シェイプ 100個 )
■ 中負荷版 ( シェイプ 500個 )
■ 高負荷版 ( シェイプ 1000個 )
よーしチューニング、チューニングっと・・・
- Newer: サグールテレビがオープン
- Older: AS3 チューニング実験