forked from: 型指定配列と型無指定配列でパフォーマンスがあまり変わらない気が
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 の使用方法についてはチェックしません。 とあります。
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;
}
}
}