forked from: 型指定配列と型無指定配列でパフォーマンスがあまり変わらない気が

by shohei909 forked from 型指定配列と型無指定配列でパフォーマンスがあまり変わらない気が (diff: 68)
左上に計算時間を
型指定なし/型指定あり
で表示

[ArrayElementType("String")]で型指定した配列 と Vectorを追加
左上に計算時間を
型指定なし/型指定あり/間違った型指定/Vector
で表示。

型指定が間違ってても普通に動作しました。
このメタタグってmxml用なんじゃないでしょうか。

Adobe Flex ヘルプ
http://livedocs.adobe.com/flex/3_jp/html/help.html?content=metadata_3.html

こちらには
MXML コンパイラは、MXML コード内でのみ、Array が正しく使用されているかどうかをチェックします。ActionScript コード内での Array の使用方法についてはチェックしません。
とあります。
♥0 | Line 100 | Modified 2010-04-06 18:46:01 | MIT License
play

ActionScript3 source code

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

// forked from aont's 型指定配列と型無指定配列でパフォーマンスがあまり変わらない気が
package {
	/*
	左上に計算時間を
		型指定なし/型指定あり
	で表示
	
	
	
	
	[ArrayElementType("String")]で型指定した配列 と Vectorを追加
	左上に計算時間を
		型指定なし/型指定あり/間違った型指定/Vector
	で表示。
	
	型指定が間違ってても普通に動作しました。
	このメタタグってmxml用なんじゃないでしょうか。
	
	
	Adobe Flex ヘルプ
	http://livedocs.adobe.com/flex/3_jp/html/help.html?content=metadata_3.html
	
	こちらには
		MXML コンパイラは、MXML コード内でのみ、Array が正しく使用されているかどうかをチェックします。ActionScript コード内での Array の使用方法についてはチェックしません。
	とあります。
	*/
	import flash.display.Sprite;
	import flash.utils.getTimer;
	import flash.text.TextField;
	public class FlashTest extends Sprite {
		private static var N:int = 1 << 17;
		public function FlashTest() {
			var tf:TextField = new TextField();
			this.addChild(tf);
			
			var time1:int =0;
			var time2:int =0;
			var time3:int =0;
			var time4:int =0;		
			CastEachTime();
				time1 = CastEachTime();
				time2 = NumberArray();
				time3 = StringArray();
				time4 = NumberVector();
		
			tf.text = time1.toString()+"/"+time2.toString()+"/"+time3.toString()+"/"+time4.toString();
		}
		private static function CastEachTime():int
		{            
			var start:int;
			var end:int;
			var i:int;
			var array:Array = new Array(N);
			var S:Number=0;
			
			start = getTimer();	
			for(i=0;i<N;++i)
			{
				array[i] = Math.exp(i);
			}				
			for(i=0;i<N;++i)
			{
				S += array[i];
			}	
			end = getTimer();
			return end-start;
		} 
		private static function NumberArray():int
		{            
			var start:int;
			var end:int;
			var i:int;
			[ArrayElementType("Number")]
			var array:Array = new Array(N);
			var S:Number=0;
			
			start = getTimer();
			for(i=0;i<N;++i)
			{
				array[i] = Math.exp(i);
			}				
			for(i=0;i<N;++i)
			{
				S += array[i];
			}	
			end = getTimer();
			return end-start;
		}
		private static function StringArray():int
		{            
			var start:int;
			var end:int;
			var i:int;
			[ArrayElementType("String")]
			var array:Array = new Array(N);
			var S:Number=0;
			
			start = getTimer();
			for(i=0;i<N;++i)
			{
				array[i] = Math.exp(i);
			}				
			for(i=0;i<N;++i)
			{
				S += array[i];
			}	
			end = getTimer();
			return end-start;
		}
		private static function NumberVector():int
		{            
			var start:int;
			var end:int;
			var i:int;
			var array:Vector.<Number> = new Vector.<Number>(N);
			var S:Number=0;
			
			start = getTimer();
			for(i=0;i<N;++i)
			{
				array[i] = Math.exp(i);
			}				
			for(i=0;i<N;++i)
			{
				S += array[i];
			}	
			end = getTimer();
			return end-start;
		}
	}
}