<!-- textcontrols/LabelControlLinkEvent.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">
    
<mx:VBox>
        <mx:Button click="{testWithoutParams()}" label="testWithoutParams()"/>
        <mx:Button click="{testWithParams()}"  label="testWithParams()"/>
        <mx:Button click="{testWithParamsIDef0()}"  label="testWithParamsIDef0()"/>
        <mx:Button click="{testStaticParams()}"  label="testStaticParams()"/>
    <mx:Label text="log"/>
    <mx:TextArea width="400" height="200" id="log">
        
    </mx:TextArea>
</mx:VBox>        


    <mx:Script>
        <![CDATA[
        
    public static var si:int;
    public static var pi:Point;
    public static var p1i:Point;
    
    public function withParams(p:Point, p1:Point, i:int ) : void
    {
    p.x = 10;
    p.y = 10;
    
    p = localToGlobal(p);
    p1 = globalToLocal(p);
    
    for ( ;i<2;i++ )
    {
     p1.x = p.x;
    }
   
   }
   
   public function withParamsIDef0(p:Point, p1:Point, i:int=0) : void
   {
    p.x = 10;
    p.y = 10;
    
    p = localToGlobal(p);
    p1 = globalToLocal(p);
    
    for ( ;i<2;i++ )
    {
     p1.x = p.x;
    }
   }
   
   public function withOutParams() : void
   {
    var p : Point = new Point(10,10);
    var p1 : Point;
    
    p = localToGlobal(p);
    p1 = globalToLocal( p );
    
    var i:int = 0;
    
    for ( ;i<2;i++ )
    {
     p1.x = p.x;
    }

   }
   public function staticParams() : void
   {
    pi.x = 10;
    pi.y = 10; 
    
    pi = localToGlobal(pi);
    p1i = globalToLocal( pi );
    
    si = 0;
    
    for ( ;si<2;si++ )
    {
     p1i.x = pi.x;
    }

   }
   public function testWithParams()
   {
           var p:Point = new Point();
           var p1:Point = new Point();

           var t : int = getTimer();
           
           for(var i:int=0;i<count;i++)
           {
               withParams(p,p1,0);
           }
           
        t =  getTimer()-t;          
           log.text+="testWithParams -> "+t+' ms\n';

   }

   public function testWithParamsIDef0()
   {
           var p:Point = new Point();
           var p1:Point = new Point();

           var t : int = getTimer();
           
           for(var i:int=0;i<count;i++)
           {
               withParamsIDef0(p,p1);
           }
        t =  getTimer()-t;          
           log.text+="testWithParamsIDef0 -> "+t+' ms\n';
   }
   
   public function testWithoutParams()
   {
           var t : int = getTimer();

           for(var i:int=0;i<count;i++)
           {
               withOutParams();
           }
        t =  getTimer()-t;          
           log.text+="testWithoutParams -> "+t+' ms\n';

   }
   
    public function testStaticParams()
   {
           var t : int = getTimer();
        pi = new Point();
        
           for(var i:int=0;i<count;i++)
           {
               staticParams();
           }
        t =  getTimer()-t;          
           log.text+="testStaticParams -> "+t+' ms\n';

   } 
   
   var count : int = 1000000
    
   
        ]]>
    </mx:Script>
</mx:Application>