Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package {
  2.     import flash.display.*;
  3.     import flash.system.Capabilities;
  4.     import flash.text.*;
  5.     import flash.utils.*;
  6.  
  7.     public class Main extends Sprite
  8.     {
  9.         private var __logger:TextField = new TextField();
  10.         private function row(...cols): void
  11.         {
  12.             __logger.appendText(cols.join(",") + "\n");
  13.         }
  14.  
  15.         public function Main()
  16.         {
  17.             __logger.autoSize = TextFieldAutoSize.LEFT;
  18.             addChild(__logger);
  19.             __logger.text = Capabilities.version + " " + Capabilities.playerType;
  20.  
  21.             var beforeTime:int;
  22.             var afterTime:int;
  23.             var noCastTime:int;
  24.             var castTime:int;
  25.             var item:MyItem;
  26.             var i:uint;
  27.             var len:uint = 10000000;
  28.             var itemsArray:Array = new Array(len);
  29.             var itemsVector:Vector.<MyItem> = new Vector.<MyItem>(len);
  30.             var itemsDictionary:Dictionary = new Dictionary();
  31.             var itemsObject:Object = new Object();
  32.             var itemsDynClass:Dynamic = new Dynamic();
  33.             for (i = 0; i < len; ++i)
  34.             {
  35.                 itemsArray[i] =
  36.                 itemsVector[i] =
  37.                 itemsDictionary[i] =
  38.                 itemsObject[i] =
  39.                 itemsDynClass[i] = new MyItem();
  40.             }
  41.  
  42.             row("Type", "No Cast Time", "Cast Time");
  43.  
  44.             beforeTime = getTimer();
  45.             for (i = 0; i < len; ++i)
  46.             {
  47.                 item = itemsArray[i];
  48.             }
  49.             afterTime = getTimer();
  50.             noCastTime = afterTime-beforeTime;
  51.             beforeTime = getTimer();
  52.             for (i = 0; i < len; ++i)
  53.             {
  54.                 item = itemsArray[i] as MyItem;
  55.             }
  56.             afterTime = getTimer();
  57.             castTime = afterTime-beforeTime;
  58.             row("Array", noCastTime, castTime);
  59.  
  60.             beforeTime = getTimer();
  61.             for (i = 0; i < len; ++i)
  62.             {
  63.                 item = itemsVector[i];
  64.             }
  65.             afterTime = getTimer();
  66.             noCastTime = afterTime-beforeTime;
  67.             beforeTime = getTimer();
  68.             for (i = 0; i < len; ++i)
  69.             {
  70.                 item = itemsVector[i] as MyItem;
  71.             }
  72.             afterTime = getTimer();
  73.             castTime = afterTime-beforeTime;
  74.             row("Vector", noCastTime, castTime);
  75.  
  76.             beforeTime = getTimer();
  77.             for (i = 0; i < len; ++i)
  78.             {
  79.                 item = itemsDictionary[i];
  80.             }
  81.             afterTime = getTimer();
  82.             noCastTime = afterTime-beforeTime;
  83.             beforeTime = getTimer();
  84.             for (i = 0; i < len; ++i)
  85.             {
  86.                 item = itemsDictionary[i] as MyItem;
  87.             }
  88.             afterTime = getTimer();
  89.             castTime = afterTime-beforeTime;
  90.             row("Dictionary", noCastTime, castTime);
  91.  
  92.             beforeTime = getTimer();
  93.             for (i = 0; i < len; ++i)
  94.             {
  95.                 item = itemsObject[i];
  96.             }
  97.             afterTime = getTimer();
  98.             noCastTime = afterTime-beforeTime;
  99.             beforeTime = getTimer();
  100.             for (i = 0; i < len; ++i)
  101.             {
  102.                 item = itemsObject[i] as MyItem;
  103.             }
  104.             afterTime = getTimer();
  105.             castTime = afterTime-beforeTime;
  106.             row("Object", noCastTime, castTime);
  107.  
  108.             beforeTime = getTimer();
  109.             for (i = 0; i < len; ++i)
  110.             {
  111.                 item = itemsDynClass[i];
  112.             }
  113.             afterTime = getTimer();
  114.             noCastTime = afterTime-beforeTime;
  115.             beforeTime = getTimer();
  116.             for (i = 0; i < len; ++i)
  117.             {
  118.                 item = itemsDynClass[i] as MyItem;
  119.             }
  120.             afterTime = getTimer();
  121.             castTime = afterTime-beforeTime;
  122.             row("Dynamic Class", noCastTime, castTime);
  123.            
  124.             /////////////////////////////////////////////
  125.             // Vector + public
  126.             /////////////////////////////////////////////
  127.            
  128.             beforeTime = getTimer();
  129.             for(i = 0; i< len; ++i) {
  130.                  item=itemsVector[i];
  131.                  item=item.next;
  132.             }
  133.             afterTime = getTimer();
  134.             noCastTime = afterTime-beforeTime;
  135.            
  136.             /////////////////////////////////////////////
  137.            
  138.             beforeTime = getTimer();
  139.             for(i = 0; i< len; ++i) {
  140.                  item=itemsVector[i] as MyItem;
  141.                  item=item.next;
  142.             }
  143.             afterTime = getTimer();
  144.             castTime = afterTime-beforeTime;
  145.             row("Vector + public", noCastTime, castTime);
  146.            
  147.             /////////////////////////////////////////////
  148.             // vector + method
  149.             /////////////////////////////////////////////
  150.            
  151.             beforeTime = getTimer();
  152.             for(i = 0; i < len; ++i) {
  153.                  item=itemsVector[i];
  154.                  item.foo();
  155.             }
  156.             afterTime = getTimer();
  157.             noCastTime = afterTime-beforeTime;
  158.            
  159.             /////////////////////////////////////////////
  160.            
  161.             beforeTime = getTimer();
  162.             for(i = 0; i < len; ++i) {
  163.                  item=itemsVector[i] as MyItem;
  164.                  item.foo();
  165.             }
  166.             afterTime = getTimer();
  167.             castTime = afterTime-beforeTime;
  168.             row("Vector + method", noCastTime, castTime);
  169.         }
  170.     }
  171. }
  172. class MyItem{
  173.     public var next:MyItem;
  174.     public function foo():void {
  175.        
  176.     }
  177. }
  178. dynamic class Dynamic{}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement