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にキャストするから?)