<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" styleName="plain" layout="absolute" viewSourceURL="srcview/index.html">
  
    <mx:Array id="myA"/>

  <mx:ArrayCollection id="myAC"/>
  
  <mx:ArrayCollection id="myACNAU"/>
  
  <mx:ArrayCollection id="myDBAC"/>    
    
    <mx:ArrayCollection id="myDDBAC"/>
    
    <mx:VBox horizontalCenter="0" top="15" horizontalAlign="center">
      <mx:FormItem label="Number of objects to create:">
        <mx:NumericStepper id="numObjects" minimum="100000" maximum="1000000" stepSize="100000"/>
      </mx:FormItem>
      
      <mx:FormItem label="Create on:">        
        <mx:RadioButton id="useA" label="Array" groupName="dataType" selected="true"/>
    
        <mx:RadioButton id="useAC" label="ArrayCollection" groupName="dataType"/>
        
        <mx:RadioButton id="useACNAU" label="ArrayCollection without autoUpdates" groupName="dataType"/>
        
        <mx:RadioButton id="useDBAC" label="Data Bound ArrayCollection" groupName="dataType"/>
        
        <mx:RadioButton id="useDDBAC" label="Double Data Bound ArrayCollection" groupName="dataType"/>  
      </mx:FormItem>
        
      <mx:Button label="Start">
          <mx:click>
          <![CDATA[
          myA = [];
          myAC.removeAll();
          myACNAU.disableAutoUpdate();
          myDBAC.removeAll();
          myDDBAC.removeAll();
          
          var startTime:Date = new Date();
          
          if (useA.selected)
          {
              for (var i:int = 0; i < numObjects.value; i++)
        {
          myA.push({prop1:'asdf', prop2:startTime, prop3:i});
        }
      }
      else if (useAC.selected)
      {
        for (var j:int = 0; j < numObjects.value; j++)
              {
                  myAC.addItem({prop1:'asdf', prop2:startTime, prop3:j});
              }
      }
      else if (useACNAU.selected)
      {
        for (var n:int = 0; n < numObjects.value; n++)
              {
                  myACNAU.addItem({prop1:'asdf', prop2:startTime, prop3:n});
              }
      }
      else if (useDBAC.selected)
      {
        for (var k:int = 0; k < numObjects.value; k++)
              {
                  myDBAC.addItem({prop1:'asdf', prop2:startTime, prop3:k});
              }
      }
      else if (useDDBAC.selected)
      {
        for (var m:int = 0; m < numObjects.value; m++)
              {
                  myDDBAC.addItem({prop1:'asdf', prop2:startTime, prop3:m});
              }
      }
          
      timeToCreate.text = ((new Date()).time - startTime.time) + "ms";
        ]]>
          </mx:click>
      </mx:Button>
      
      <mx:Label id="timeToCreate" fontSize="24"/>
    </mx:VBox>
    
    <mx:DataGrid dataProvider="{myDBAC}" visible="false"/>
  
  <mx:DataGrid dataProvider="{myDDBAC}" visible="false"/>
  
  <mx:DataGrid dataProvider="{myDDBAC}" visible="false"/>
  
</mx:Application>