forked from: Amazing Lookups Optimization

by aobyrne forked from Amazing Lookups Optimization (diff: 13)
♥0 | Line 119 | Modified 2011-07-20 00:35:54 | MIT License
play

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{}