[Access time comparison #3] Array vs Object (Element type:String)
1000個のString型の要素を持つArrayとObjectをそれぞれ、1000回ランダムにアクセスし、アクセスする時間を比較。
要素がObject型のときと比べ、ループではなくindexOfでアクセスする分速いが、結果はObjectのほうが断然速い。
♥0 |
Line 50 |
Modified 2010-10-17 00:16:13 |
MIT License
archived:2017-03-20 15:24:17
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/vxgT
*/
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:String = "name"+i;
list.push(data);
table[data] = i;
}
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);
ans = list.indexOf(trg);
}
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];
}
ret += "Object " + ((new Date).time - rectime) + "ms\n";
return ret;
}
}
}
}