Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package {
- import flash.display.*;
- import flash.system.Capabilities;
- import flash.text.*;
- import flash.utils.*;
- public class Main extends Sprite
- {
- private var __logger:TextField = new TextField();
- private function row(...cols): void
- {
- __logger.appendText(cols.join(",") + "\n");
- }
- public function Main()
- {
- __logger.autoSize = TextFieldAutoSize.LEFT;
- addChild(__logger);
- __logger.text = Capabilities.version + " " + Capabilities.playerType;
- 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", "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 MyItem;
- }
- 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 MyItem;
- }
- 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 MyItem;
- }
- 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 MyItem;
- }
- 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 MyItem;
- }
- afterTime = getTimer();
- castTime = afterTime-beforeTime;
- row("Dynamic Class", noCastTime, castTime);
- /////////////////////////////////////////////
- // Vector + public
- /////////////////////////////////////////////
- beforeTime = getTimer();
- for(i = 0; i< len; ++i) {
- item=itemsVector[i];
- item=item.next;
- }
- afterTime = getTimer();
- noCastTime = afterTime-beforeTime;
- /////////////////////////////////////////////
- beforeTime = getTimer();
- for(i = 0; i< len; ++i) {
- item=itemsVector[i] as MyItem;
- item=item.next;
- }
- afterTime = getTimer();
- castTime = afterTime-beforeTime;
- row("Vector + public", noCastTime, castTime);
- /////////////////////////////////////////////
- // vector + method
- /////////////////////////////////////////////
- beforeTime = getTimer();
- for(i = 0; i < len; ++i) {
- item=itemsVector[i];
- item.foo();
- }
- afterTime = getTimer();
- noCastTime = afterTime-beforeTime;
- /////////////////////////////////////////////
- beforeTime = getTimer();
- for(i = 0; i < len; ++i) {
- item=itemsVector[i] as MyItem;
- item.foo();
- }
- afterTime = getTimer();
- castTime = afterTime-beforeTime;
- row("Vector + method", noCastTime, castTime);
- }
- }
- }
- class MyItem{
- public var next:MyItem;
- public function foo():void {
- }
- }
- dynamic class Dynamic{}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement