Tu problema, es la declaración de variables dentro de bucles, cada vez que declaras una variable en un bucle, significa que cargas en memoria tantas veces el objeto como largo sea el bucle.
Lo otro a considerar, no declares las variables de inicio dentro del bucle, eso tambien es una mala práctica.
Ejemplo ideal:
var a:int=0;
var largo:int = parseInt(num_grupos.text);
var tem_num:int;
var tem_formitem:FormItem;
var tem_texinput:TextInput;
//carga de text input grupos
for(;a<largo;a++)
{
tem_num=a+1;
tem_formitem = new FormItem();
tem_texinput = 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);
}
Revisa todos los bucles, y cuando quieras ver la eficiencia de tu código usa la opción Flash Profile
Busca en google, buenas práctica de programación, optimizar código, yo recuerdo haber encontrado un pdf hace ya muchos (no recuerdo de donde lo sque, ni donde lo deje). Lo que si pude entender, que en todos los lenguajes de programación se puede aplicar las mismas prácticas, y si es Orientado a Objetos.
Alvaro
Temuco - Chile Cita:
Iniciado por anikilatorbeta hola amigos necesito optimizar el siguiente codigo
lo q pasa q cumple su funcion pero come demaciado procesador cuando es una cantidad muy grande de usuarios y el problema q lo necesito para una cantidad grande me pueden decir como corregir eso aqui les dejo el link para q lo vean funcionando y el codigo xau
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>