人生初ベンチ

as3, 固定長・固定型(っていうのか?)配列ってないのね(10からVectorがでるそうです、ぐぐれ)
というのはas3の性質なの?プレーヤーの性質なの?
ベンチってやったことないんだよねー部活では万年ベンチでしたがwwwwwwってやかましいわ!
二次元配列の実現を1次元の配列でやるかマジで2次元でやるか?という話 こんなんでいいのカナ?

こーど

package {
    import flash.display.Sprite;
    import flash.utils.getTimer;
    public class Bench extends Sprite {
        public function Bench() {
            const WIDTH:uint = 256;
            const HEIGHT:uint = 256;
            var a:Array = new Array, b:Array = new Array;
            var _:uint, c:uint, r:uint;
            var startTime:Number ;
            var sum:uint = 0;
            for (var x:uint = 0; x < 5; x++) {
                startTime = getTimer();
                for (_ = 0; _ < 100; _++) {
                    for (r = 0; r < HEIGHT; r++) {
                        for (c = 0; c < WIDTH; c++) {
                            a[r * WIDTH + c] = 1;
                        }
                    }
                }
                trace('1d set: ' + (getTimer() - startTime) + ' ms');

                startTime = getTimer();
                for (_ = 0; _ < 100; _++) {
                    for (r = 0; r < HEIGHT; r++) {
                        for (c = 0; c < WIDTH; c++) {
                            sum += a[r * WIDTH + c];
                        }
                    }
                }
                trace('1d get: ' + (getTimer() - startTime) + ' ms');

                startTime = getTimer();
                for (c = 0; c < HEIGHT; c++) {
                    b[c] = new Array;
                }
                for (_ = 0; _ < 100; _++) {
                    for (r = 0; r < HEIGHT; r++) {
                        for (c = 0; c < WIDTH; c++) {
                            b[c][r] = 1;
                        }
                    }
                }
                trace('2d set: ' + (getTimer() - startTime) + ' ms');

                startTime = getTimer();
                for (c = 0; c < HEIGHT; c++) {
                    b[c] = new Array;
                }
                for (_ = 0; _ < 100; _++) {
                    for (r = 0; r < HEIGHT; r++) {
                        for (c = 0; c < WIDTH; c++) {
                            sum += b[c][r];
                        }
                    }
                }
                trace('2d get: ' + (getTimer() - startTime) + ' ms');
            }
        }
    }
}

けっか

1d set: 1778 ms
1d get: 2015 ms
2d set: 1376 ms
2d get: 8194 ms
1d set: 1784 ms
1d get: 2003 ms
2d set: 1377 ms
2d get: 8207 ms
1d set: 1770 ms
1d get: 2048 ms
2d set: 1380 ms
2d get: 8211 ms
1d set: 1771 ms
1d get: 2004 ms
2d set: 1372 ms
2d get: 8184 ms
1d set: 1774 ms
1d get: 2013 ms
2d set: 1382 ms
(このへんでエラーにより終了)

けつろん

setだけなら愚直なほうが若干はやい(1.7s vs 1.3s)
getすると2次元じゃおそい(2.0s vs 8.2s)(ObjectからArrayにキャストするから?)