forked from: Amazing Lookups Optimization
forked from Amazing Lookups Optimization (diff: 13)
ActionScript3 source code
/**
* Copyright aobyrne ( http://wonderfl.net/user/aobyrne )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/b9Rs
*/
package
{
import flash.display.*;
import flash.system.Capabilities;
import flash.utils.*;
import flash.text.*;
public class CastingLookUps extends Sprite
{
private var __logger:TextField = new TextField();
private function row(...cols): void
{
__logger.appendText(cols.join(",") + "\n");
}
public function CastingLookUps()
{
row("Capabilities.version : ", Capabilities.version);
__logger.autoSize = TextFieldAutoSize.LEFT;
addChild(__logger);
var beforeTime:int;
var afterTime:int;
var noCastTime:int;
var castTime:int;
var item:MyItem;
var i:uint;
var len:uint = 10000000;
var itemsArray:Array = new Array(len);
var itemsVector:Vector.<MyItem> = new Vector.<MyItem>(len);
var itemsDictionary:Dictionary = new Dictionary();
var itemsObject:Object = new Object();
var itemsDynClass:Dynamic = new Dynamic();
for (i = 0; i < len; ++i)
{
itemsArray[i] =
itemsVector[i] =
itemsDictionary[i] =
itemsObject[i] =
itemsDynClass[i] = new MyItem();
}
row("Type\t\t\t", "No Cast Time\t", "Cast Time"+"\t","castTime/noCastTime");
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsArray[i];
}
afterTime = getTimer();
noCastTime = afterTime-beforeTime;
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsArray[i] as MyItem;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Array\t\t\t", noCastTime+"\t\t\t", castTime+"\t\t",Number(castTime/noCastTime).toFixed(3));
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsVector[i];
}
afterTime = getTimer();
noCastTime = afterTime-beforeTime;
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsVector[i] as MyItem;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Vector\t\t\t", noCastTime+"\t\t\t", castTime+"\t\t",Number(castTime/noCastTime).toFixed(3));
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsDictionary[i];
}
afterTime = getTimer();
noCastTime = afterTime-beforeTime;
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsDictionary[i] as MyItem;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Dictionary\t\t", noCastTime+"\t\t\t", castTime+"\t\t",Number(castTime/noCastTime).toFixed(3));
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsObject[i];
}
afterTime = getTimer();
noCastTime = afterTime-beforeTime;
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsObject[i] as MyItem;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Object\t\t\t", noCastTime+"\t\t\t", castTime+"\t\t",Number(castTime/noCastTime).toFixed(3));
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsDynClass[i];
}
afterTime = getTimer();
noCastTime = afterTime-beforeTime;
beforeTime = getTimer();
for (i = 0; i < len; ++i)
{
item = itemsDynClass[i] as MyItem;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Dynamic Class\t", noCastTime+"\t\t\t", castTime+"\t\t",Number(castTime/noCastTime).toFixed(3));
}
}
}
class MyItem{}
dynamic class Dynamic{}