Hola necesito su ayuda e echo algo en flex para practicar antes de meterme en un proyecto real parecido y es el ingreso de usuario y elegirle su grupo y su sub grupo
como veran funciona pero encuentro q el rendimiento no es bueno
lo q pasa q necesito q sea para candidades grandes minimo 50 grupos 50 sub grupos 50 usuarios
pero con esa cantidad se demora en procesar la info
como puedo optimizar lo q hice para q rinda mas?
aqui les dejo el link y mas abajo el codigo aunque en el mismo demo pueden ver el codigo saludos y espero q me puedan ayudar

[url=http://www.reflexpro.cl/freddy/exp_fase_01.html]

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#632626, #632626]" viewSourceURL="srcview/index.html">
<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.controls.ComboBox;
        import mx.controls.Label;
        import mx.containers.FormItem;
        import mx.controls.Alert;
        import mx.events.ValidationResultEvent;
        import mx.controls.Button;
        import mx.controls.TextInput;
        private var ar_grupos:Array;
        private var ar_sub_grupos:Array;
        private var ar_lista:ArrayCollection=new ArrayCollection;
        private function init_layer_grup():void{
            //carga de text input grupos
            for(var a:int=0;a<parseInt(num_grupos.text);a++)
            {
                var tem_num:int=a+1;
                var tem_formitem:FormItem=new FormItem();
                var tem_texinput:TextInput=new TextInput();
                tem_formitem.name="form_grupos_"+a;
                tem_formitem.label="Grupos "+tem_num;
                tem_texinput.name="txt_grupos_"+a;
                tem_formitem.addChild(tem_texinput);
                layer_grupos.addChild(tem_formitem);
            }
            //carga de text inut sub grupos
            for(var a:int=0;a<parseInt(num_sub_grupos.text);a++)
            {
                var tem_num:int=a+1;
                var tem_formitem:FormItem=new FormItem();
                var tem_texinput:TextInput=new TextInput();
                tem_formitem.name="form_sub_grupos_"+a;
                tem_formitem.label="Sub Grupos "+tem_num;
                tem_texinput.name="txt_sub_grupos_"+a;
                tem_formitem.addChild(tem_texinput);
                layer_sub_grupos.addChild(tem_formitem);
            }
        }
        private function init_layer_usuarios():void{
            //llenado combobox grupos
            ar_grupos=[];
            for(var a:int=0;a<parseInt(num_grupos.text);a++){
                var tem_formitem:FormItem=new FormItem();
                var tem_texinput:TextInput=new TextInput();
                tem_formitem= layer_grupos.getChildByName("form_grupos_"+a)as FormItem;
                tem_texinput= tem_formitem.getChildByName("txt_grupos_"+a)as TextInput;
                ar_grupos.push({label:tem_texinput.text});
            }
            //llenado combobox sub grupos
            ar_sub_grupos=[];
            for(var a:int=0;a<parseInt(num_sub_grupos.text);a++){
                var tem_formitem:FormItem=new FormItem();
                var tem_texinput:TextInput=new TextInput();
                tem_formitem= layer_sub_grupos.getChildByName("form_sub_grupos_"+a)as FormItem;
                tem_texinput= tem_formitem.getChildByName("txt_sub_grupos_"+a)as TextInput;
                ar_sub_grupos.push({label:tem_texinput.text});
            }
            //llenado de usuarios
            var y:int=0;
            for(var a:int=0;a<parseInt(num_usuarios.text);a++){
                var tem_num:int=a+1;
                //ini label
                var tem_label:Label=new Label();
                tem_label.text="Usuario "+tem_num+":";
                tem_label.move(10,y);
                layer_usuarios.addChild(tem_label);
                //fin label            
                //ini textinput
                var tem_texinput:TextInput=new TextInput();
                tem_texinput.name="usuario_"+a
                tem_texinput.move(80,y);
                layer_usuarios.addChild(tem_texinput);
                //fin textinput
                //ini combobox grupos
                var tem_combobox_grupos:ComboBox=new ComboBox();
                tem_combobox_grupos.name="grupos_"+a;
                tem_combobox_grupos.dataProvider=ar_grupos;
                tem_combobox_grupos.move(250,y);
                layer_usuarios.addChild(tem_combobox_grupos);
                //fin combobox grupos
                //ini combobox sub grupos
                var tem_combobox_sub_grupos:ComboBox=new ComboBox();
                tem_combobox_sub_grupos.name="sub_grupos_"+a;
                tem_combobox_sub_grupos.dataProvider=ar_sub_grupos;
                tem_combobox_sub_grupos.move(420,y);
                layer_usuarios.addChild(tem_combobox_sub_grupos);
                //fin combobox sub grupos
                y=y+30;
            }
        }
        private function init_layer_listado():void{
            for(var a:int=0;a<parseInt(num_usuarios.text);a++){
                //sacar datos nombre usuario
                var tem_texinput:TextInput=new TextInput();
                tem_texinput=layer_usuarios.getChildByName("usuario_"+a)as TextInput;
                //sacar datos grupo
                var tem_combo_grupo:ComboBox=new ComboBox();
                tem_combo_grupo=layer_usuarios.getChildByName("grupos_"+a)as ComboBox;
                //sacar datos sub grupos
                var tem_combo_sub_grupo:ComboBox=new ComboBox();
                tem_combo_sub_grupo=layer_usuarios.getChildByName("sub_grupos_"+a)as ComboBox;
                //traspaso a array collection
                ar_lista.addItem({usuario:tem_texinput.text, grupo:tem_combo_grupo.selectedLabel, sub_grupo:tem_combo_sub_grupo.selectedLabel});
            }
            data_lista.dataProvider=ar_lista;
        }
        private function validar_user():void{
            layer_con.selectedIndex=3;
        }
        private function validar_grup():void{
            layer_con.selectedIndex=2;
        }
        private function validarcantidades():void{
            var validar_usuarios:ValidationResultEvent=validar_usuarios.validate();
            var validar_grupos:ValidationResultEvent=validar_grupos.validate();
            var validar_sub_grupos:ValidationResultEvent=validar_sub_grupos.validate();
            
            if(validar_usuarios.type == ValidationResultEvent.VALID && validar_grupos.type == ValidationResultEvent.VALID && validar_sub_grupos.type == ValidationResultEvent.VALID)
            {
                layer_con.selectedIndex=1;
            }else{
                Alert.show("Faltan Datos Por Ingresar");
            }
        }
    ]]>
</mx:Script>
<mx:StringValidator source="{num_usuarios}" property="text" requiredFieldError="Complete Cantidad de Usuarios" 
    trigger="{btn_can}" triggerEvent="click" id="validar_usuarios"/>
<mx:StringValidator source="{num_grupos}" property="text" requiredFieldError="Complete Cantidad de Grupos" 
    trigger="{btn_can}" triggerEvent="click" id="validar_grupos" />
<mx:StringValidator source="{num_sub_grupos}" property="text" requiredFieldError="Complete Cantidad de Sub Grupos" 
    trigger="{btn_can}" triggerEvent="click" id="validar_sub_grupos"/>
    <mx:TabNavigator width="685" height="544" horizontalCenter="0" verticalCenter="0" selectedIndex="0" id="layer_con">
        <mx:Form label="Inicio" width="100%" height="100%">
            <mx:FormHeading label="Cantidades"/>
            <mx:FormItem label="Usuarios">
                <mx:TextInput restrict="0-9" id="num_usuarios"/>
            </mx:FormItem>
            <mx:FormItem label="Grupos">
                <mx:TextInput restrict="0-9" id="num_grupos"/>
            </mx:FormItem>
            <mx:FormItem label="Sub Grupos">
                <mx:TextInput restrict="0-9" id="num_sub_grupos"/>
            </mx:FormItem>
            <mx:FormItem>
                <mx:Button label="Aceptar" id="btn_can" click="validarcantidades();"/>
            </mx:FormItem>
            </mx:Form>
        <mx:Canvas label="Grupos - Sub Grupos" width="100%" height="100%" initialize="init_layer_grup()">
            <mx:Form x="0" y="0" width="341" height="462" id="layer_grupos">
                <mx:FormHeading label="Grupos" textAlign="center"/>
            </mx:Form>
            <mx:Form x="342" y="0" width="50%" height="462" id="layer_sub_grupos">
                <mx:FormHeading label="Sub Grupos" textAlign="center"/>
            </mx:Form>
            <mx:Button x="608" y="479" label="Aceptar" click="validar_grup();"/>
        </mx:Canvas>
        <mx:Canvas label="Usuarios" width="100%" height="100%" initialize="init_layer_usuarios()">
            <mx:Button x="601" y="479" label="Aceptar" click="validar_user();"/>
            <mx:Canvas x="0" y="27" height="444" width="683" id="layer_usuarios">
            </mx:Canvas>
            <mx:Label x="80" y="1" text="Nombre" fontWeight="bold" fontSize="12"/>
            <mx:Label x="250" y="1" text="Grupo" fontWeight="bold" fontSize="12"/>
            <mx:Label x="420" y="1" text="Sub Grupo" fontWeight="bold" fontSize="12"/>
        </mx:Canvas>
        <mx:Canvas label="Listado" width="100%" height="100%" initialize="init_layer_listado()">
            <mx:DataGrid x="10" y="10" width="663" height="491" id="data_lista">
                <mx:columns>
                    <mx:DataGridColumn headerText="Usuario" dataField="usuario"/>
                    <mx:DataGridColumn headerText="Grupo" dataField="grupo"/>
                    <mx:DataGridColumn headerText="Sub Grupo" dataField="sub_grupo"/>
                </mx:columns>
            </mx:DataGrid>
        </mx:Canvas>
    </mx:TabNavigator>
</mx:Application>