[Access time comparison #2] Vector vs Object (Element type:Object)
1000個の{name:"name1",value:1}という要素を持つVectorとObjectをそれぞれ、1000回ランダムにアクセスし、アクセスする時間を比較。
結果はObjectのほうが断然速い。ArrayとVectorでも型がObject型だと速度は変わらない
♥0 |
Line 56 |
Modified 2010-10-17 00:15:27 |
MIT License
archived:2017-03-20 15:24:20
ActionScript3 source code
/**
* Copyright inosyan ( http://wonderfl.net/user/inosyan )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/f5ol
*/
package {
import flash.text.TextField;
import flash.display.Sprite;
public class FlashTest extends Sprite {
private var _output:TextField;
public function FlashTest() {
_output = new TextField;
_output.width = 400;
_output.height = 300;
addChild(_output);
experiment_List_Table();
}
private function experiment_List_Table():void
{
const MAX:int = 1000;
const TESTCNT:int = 1000;
var tmp:Array = [];
var table:Object = {};
for( var i:int = 0; i < MAX; ++i ){
var data:* = {name:"name"+i,value:i};
tmp.push(data);
table[data.name] = data;
}
var list:Vector.<Object> = Vector.<Object>(tmp);
var rectime:Number, trg:String, ans:int;
var s:String = "VectorとObjectとのアクセス時間比較\n";
for( var a:int = 0; a < 5; ++a ){
s += "///// "+(a+1) + "回目 /////\n";
s += _sub();
}
_output.text = s;
function _sub():String
{
var ret:String = "";
// Vector
rectime = (new Date).time;
for( i = 0; i < TESTCNT; ++i ){
trg = "name"+int(Math.random()*MAX);
for( var j:int = 0; j < list.length; ++j ){
if(list[j].name == trg){
ans = list[j].value;
break;
}
}
}
ret += "Vector " + ((new Date).time - rectime) + "ms\n";
// Object
rectime = (new Date).time;
for( i = 0; i < TESTCNT; ++i ){
trg = "name"+int(Math.random()*MAX);
ans = table[trg].value;
}
ret += "Object " + ((new Date).time - rectime) + "ms\n";
return ret;
}
}
}
}