Array:そのまま/メモリ指定/適当に代入, Vector:そのまま/サイズ固定
http://wonderfl.net/code/2b40adee55401dba5f8fdebeac528f52f2b5d652
forkしようと思ったら、なぜかコンパイルが始まらなかったので新規に。
ArrayとVectorの速度比較。
クリックすると始まります。
微妙に順番を入れ替えたりします。
1 Array
2 Array+メモリ指定
3 Array+適当に代入
4 Vector
5 Vector+固定
♥0 |
Line 77 |
Modified 2010-04-09 02:11:10 |
MIT License
archived:2017-03-10 19:21:42
ActionScript3 source code
/**
* Copyright dacyou ( http://wonderfl.net/user/dacyou )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4A8O
*/
// forked from Fumio's Vector class versus Array class
// http://wonderfl.net/code/2b40adee55401dba5f8fdebeac528f52f2b5d652
// forkしようと思ったら、なぜかコンパイルが始まらなかったので新規に。
/*
ArrayとVectorの速度比較。
クリックすると始まります。
微妙に順番を入れ替えたりします。
1 Array
2 Array+メモリ指定
3 Array+適当に代入
4 Vector
5 Vector+固定
*/
package {
import flash.display.Sprite
import flash.utils.getTimer
import flash.events.MouseEvent
import flash.text.TextField
public class Main extends Sprite {
private const MAX_NUMBER:int = 5000000;
private var my_array:Array = new Array()
private var my_array2 :Array = new Array(MAX_NUMBER)
private var my_array3 :Array = new Array(MAX_NUMBER)
private var myVector:Vector.<int> = new Vector.<int>();
private var myVectorFixed:Vector.<int> = new Vector.<int>(MAX_NUMBER, true); // 長さを固定
private var i:int;
private var started:int;
private var _field :TextField
function Main() {
addChild( _field = new TextField )
_field.autoSize = "left"
for ( i = 0; i < MAX_NUMBER; i++ )
my_array3[i] = "ABC"
stage.addEventListener( MouseEvent.CLICK, _onClick )
_field.appendText( "*** Click me!!***\n" )
}
private var list :Array = [testArray, testArray2, testArray3, testVector, testVectorFixed]
private function _onClick( e :MouseEvent ) :void {
stage.removeEventListener( MouseEvent.CLICK, _onClick )
var a :int = int(Math.random() * list.length)
var b :int = list.length - (a+1)
var c :Function = list[a]
list[a] = list[b]
list[b] = c
_field.appendText( ">>>>> start\n" )
for each( var func :Function in list )
func()
_field.appendText("<<<<< end\n")
_field.appendText( "\n*** Click me!!***\n" )
for ( i = 0; i < MAX_NUMBER; i++ )
my_array3[i] = "ABC"
stage.addEventListener( MouseEvent.CLICK, _onClick )
}
private function testArray():void {
started = getTimer();
for (i = 0; i < MAX_NUMBER; i++) {
my_array[i] = i;
}
_field.appendText( "Array : " + (getTimer() - started) + "\n");
}
private function testArray2():void {
started = getTimer();
for (i = 0; i < MAX_NUMBER; i++) {
my_array2[i] = i;
}
_field.appendText( "Array メモリ指定 : " + (getTimer() - started) + "\n");
}
private function testArray3():void {
started = getTimer();
for (i = 0; i < MAX_NUMBER; i++) {
my_array3[i] = i;
}
_field.appendText( "Array 適当に代入 : " + (getTimer() - started) + "\n");
}
private function testVector():void {
started = getTimer();
for (i = 0; i < MAX_NUMBER; i++) {
myVector[i] = i;
}
_field.appendText( "Vector : " + (getTimer() - started) + "\n");
}
private function testVectorFixed():void {
started = getTimer();
for (i = 0; i < MAX_NUMBER; i++) {
myVectorFixed[i] = i;
}
_field.appendText( "VectorFixed : " + (getTimer() - started) + "\n");
}
}
}//end package