forked from: forked from: Amazing Lookups Optimization

by pleclech
♥0 | Line 118 | Modified 2011-07-19 02:51:30 | MIT License
play

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