forked from: forked from: Amazing Lookups Optimization
♥0 |
Line 118 |
Modified 2011-07-19 02:51:30 |
MIT License
archived:2017-03-20 04:38:22
ActionScript3 source code
/**
* Copyright pleclech ( http://wonderfl.net/user/pleclech )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/9oE8
*/
// forked from dasdaniel's forked from: Amazing Lookups Optimization
// forked from dasdaniel's Amazing Lookups Optimization
package
{
import flash.display.*;
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()
{
addChild(__logger);
var beforeTime:int;
var afterTime:int;
var noCastTime:int;
var castTime:int;
var item:int;
var i:uint;
var len:uint = 10000000;
var itemsArray:Array = new Array(len);
var itemsVector:Vector.<int> = new Vector.<int>(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] = (Math.random()*500) as int;
}
row("Type", "No Cast Time", "Cast Time");
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 int;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Array", noCastTime, castTime);
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 int;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Vector", noCastTime, castTime);
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 int;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Dictionary", noCastTime, castTime);
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 int;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Object", noCastTime, castTime);
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 int;
}
afterTime = getTimer();
castTime = afterTime-beforeTime;
row("Dynamic Class", noCastTime, castTime);
__logger.autoSize = TextFieldAutoSize.LEFT;
}
}
}
class MyItem{
// public var next:MyItem
// public function foo():void{ }
}
dynamic class Dynamic{}