AS3のソートって、実はかなり遅かったのね・・・

AS3で画像のピクセルデータをソートしたくなり、こんな感じでソートしてみると・・・

var pixels:Vector.<uint> = bitmapData.getVector(bitmapData.rect);
var time:int = getTimer();
pixels.sort(Array.DESCENDING | Array.NUMERIC);
trace("analyzePixels() ソート完了 " + (getTimer() - time) + " msec pixels.length=" + pixels.length);

なんと、たったの16384ピクセル(128x128)をソートするのに2833msecもかかるという結果に・・・

色々調べてみると、やはりAPIにビルトインされているソートメソッドは遅いようで。独自にソートアルゴリズムを実装して高速化する方法もあるようだけど、今回の場合は2倍や4倍程度の高速化では話にならん。

やり方そのものを変えるほかなし。

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?