[Access time comparison #1] Array vs Object (Element type:Object)
1000個の{name:"name1",value:1}という要素を持つArrayとObjectをそれぞれ、1000回ランダムにアクセスし、アクセスする時間を比較。
結果はObjectのほうが断然速い。
♥0 |
Line 55 |
Modified 2010-10-17 00:20:57 |
MIT License
archived:2017-03-20 15:24:15
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/xXxb
*/
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 list:Array = [];
var table:Object = {};
for( var i:int = 0; i < MAX; ++i ){
var data:* = {name:"name"+i,value:i};
list.push(data);
table[data.name] = data;
}
var rectime:Number, trg:String, ans:int;
var s:String = "Arrayと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 = "";
// Array
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 += "Array " + ((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;
}
}
}
}