【検証テスト】配列へのアクセスはデータ型を指定で高速化される?

by selflash forked from 【検証テスト】Array = [ ] vs Array.length = 0 ? (diff: 42)
配列にアクセスする時はデータ型を指定する事でアクセスが高速化される
情報元 http://www.as-game.net/category/4265609-1.html
全然早くならないけどなにか間違ってるのだろうか、、、
♥0 | Line 50 | Modified 2010-01-24 05:27:18 | MIT License
play

ActionScript3 source code

/**
 * Copyright selflash ( http://wonderfl.net/user/selflash )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/fyhu
 */

// forked from yooKo's 【検証テスト】配列を一度空にして何度も生成する
// forked from alumican_net's Point.distance
//
// 配列にアクセスする時はデータ型を指定する事でアクセスが高速化される
// 情報元 http://www.as-game.net/category/4265609-1.html
//
// 全然早くならないけどなにか間違ってるのだろうか、、、
package {
	import flash.display.*;
	import flash.geom.Point;
	import flash.text.*;
	import flash.utils.*;
	
	public class Main extends Sprite {
		private var _array:Array = [];
		
		//----------------------------------*
		// Constractor
		//----------------------------------*
		public function Main():void {
			//-------- max number ------------------*
			var n:uint = 10000;
			
			for(var i:uint = 0; i < n; ++i) {
					_array.push(new Point((Math.random() - 0.5) * 1000,(Math.random() - 0.5) * 1000));
			}
			
			_setup();
			
			
					
			
			//-------- Array test1 ------------------*	
			_measure("temp = Array[i]", function ():void {
				var temp:Point;	
				for(var i:uint = 0; i < n; ++i) {
					temp = _array[i];
                }
            }, 100, _array);
            
            
            
			//-------- Array test2 ------------------*
			_measure("temp = Point(Array[i])", function ():void {
				var temp:Point;	
				for(var i:uint = 0; i < n; ++i) {
					temp = Point(_array[i]);
                }
            }, 100, _array);
			
			
			
			//-------- Array test3 ------------------*
			
			
			
			
			//-------- Array test4 ------------------*
						
        }
        
		//----------------------------------*
		// measure
		//----------------------------------*        
		private function _measure(title:String, func:Function, numTimes:uint, array:Array, ...params):void {
			_time = getTimer();
			
			for (var i:int = 0; i < numTimes; i++) {
				func.apply(null, params);
			}
			
			_time = getTimer() - _time;
			_debug("[ " + title + " ] " + "Array.length = " + array.length + " --> " + _time + " ms");
		}
		
		//----------------------------------*
		// debug
		//----------------------------------*		
		private function _debug(log:String):void {
			_field.appendText(log + "\n");
		}
		
		//----------------------------------*
		// Text
		//----------------------------------*
		private var _field:TextField;
		private var _time:uint;		
		private function _setup():void {
			_field = new TextField();
			_field.width = stage.stageWidth;
			_field.height = stage.stageHeight;
			
			var format:TextFormat = _field.defaultTextFormat;
			format.font = "_sans";
			_field.defaultTextFormat = format;
			
			addChild(_field);
		}
	}
}

Forked