ホーム > Flash (ActionScript) > [Flash Player 10 #3] Shader + Vector で計算の高速化

[Flash Player 10 #3] Shader + Vector で計算の高速化

beinteractive さんの twitter でのコメント。

Player10 で結構な長さのint配列に対して演算をしなければならない場合、
1. ただのArray
2. Vector.<int>
3. Vector.<int> を BitmapData に setVector して、Shader (Pixel Bender) で計算後、 getVector
のどれが一番速いんだろう

を受けて、自分も気になったので調べてみました。100 万個強のデータに uint を加算するテスト結果は以下の通り。

Array => 361 ms
Vector => 188 ms
Shader + Vector => 35 ms

Shader + Vector の組み合わせは Array より十倍近く早い結果に。今回は簡単な加算のみですが、色々と試してみる価値がありそうですね。試したコードは libspark に上げています。一式必要な方は http://www.libspark.org/svn/as3/Astro/ShaderFilter/CalcShader/ 以下をチェックアウトしてください。

‘08 5/23 追記:
活用法がないか色々と考えたり試したりしているんですが、そもそも setVector する時点で 0×00FFFFFF 以下のデータはアルファが 0 になるので、数値自体も 0 としてセットされてしまうんですよね。PixelBender 上で一ピクセルの情報だけを取り出して・・・とかの方法も分からない(できない?)し、何か良い活用法思いついた方はいらっしゃらないでしょうか?

カテゴリー: Flash (ActionScript) タグ: , ,
  1. 2008 年 5 月 22 日 21:36 | #1

    [Astro] Vector クラス(1)

    僕様ちゃん的には 3D Effects に目を奪われがちな Astro ですが、ココとか見ると Vector クラスもスゴそうじゃないの。

  1. 2009 年 3 月 25 日 18:14 | #1