Re: Optimizar el bucle para correr más rápido¿Qué estás intentando hacer?
Re: Optimizar el bucle para correr más rápido¿Has probado el Generador de perfiles dentro del depurador para determinar dónde se pasa la mayor parte del tiempo?
Re: Optimizar el bucle para correr más rápidoÉste es el enfoque que yo adoptaría.Simplifiqué el código para que el enfoque fuera más obvio.En mi sistema, cada columna se procesa en aproximadamente 2,25 segundos.
Names Default To Here( 1 );
dt = Current Data Table();
start = Tick Seconds();
dt << Clear Row States;
dt << Clear Column Selection();
dt << Clear Column Selection;
allcol = dt << get column names( string );
dt << select column group( "Tests" );
selcol = dt << get selected columns;
dt << Clear Column Selection();
// loop thru each test, mark and count fails
//new for each loop
For Each( {ii, index}, selcol,
loopstart=tick seconds();
If( ii << get data type == "Numeric",
// set up pareto columns
PassCol = New Column( "PassFail" || Char( index ), Numeric );
colspec = ii << get property( "spec limits" );
lsl = colspec["LSL"];
usl = colspec["USL"];
dt << select where( lsl >= ii <= usl );
PassCol[dt << get selected rows] = 1;
dt << invert row selection;
PassCol[dt << get selected rows] = 0;
);
show("loop " || char(index), tick seconds - loopstart);
);
show("total time= ", tick seconds()-start);Re: Optimizar el bucle para correr más rápido@txnelson Gracias Jim. Probé su método en 1 millón de filas y me llevó aproximadamente 3,5 minutos.

Re: Optimizar el bucle para correr más rápidoLo más probable es que haya estropeado las columnas y filas de la matriz en algún momento, pero no tengo tiempo para arreglarlas ahora y esto no se ha probado con un conjunto de datos más grande que el proporcionado.
Names Default To Here(1);
dt = Open("$DOWNLOADS/Sample table.jmp", invisible);
dt << Clear Row States;
dt << Clear Column Selection;
cols = dt << get column group("Tests");
test_cols = Transform Each({col}, cols, col << get name);
testcol_count = N Items(test_cols);
FUDDnum = Round(testcol_count * 0.17);
get_specs = Function({dt, colname}, {Default Local},
colspec = Column(dt, colname) << get property("Spec Limits");
specs = Associative Array();
specs["LSL"] = Try(colspec["LSL"], .);
specs["USL"] = Try(colspec["USL"], .);
return(specs);
);
// set up pareto columns
yielditer = dt << Get Table Variable("YieldIteration");
If(yielditer == "",
yield_iter_num = 1;
,
yield_iter_num = Num(yielditer) + 1;
);
dt << Set Table Variable("YieldIteration", yield_iter_num);
NumFail = dt << New Column("FailureNumber" || yielditer, Numeric, <<SET each="" value=""> specs["USL"]);
m[idx, fail_rows] = 1;
);
dt[0, NumFail << get name] = V Sum(m)`;
dt[0, PassCol << get name] = Not(V Sum(m)` > 0);
For Each Row(dt,
failcount = Column(dt, (NumFail << get name))[Row()];
If(failcount > FUDDnum,
ParetoCol[Row()] = "FUDD";
, failcount > 0,
fails = Loc(m[0, Row()]);
ParetoCol[Row()] = Concat items(test_cols[fails], ", ");
);
);
</SET>Re: Optimizar el bucle para correr más rápidoFunciona, Jarmo. Muchas gracias. Usted es maravilloso 
Optimice el bucle para correr más rápidoHola,
¡Feliz año nuevo!
¿Hay alguna manera de acelerar el procesamiento?Intenté usarlo para cada , y ahorró algo de tiempo. Estoy tratando de averiguar si puedo optimizar usando el Fórmula de columna
Aquí está mi bucle for. Se necesita mucho tiempo para ejecutar más de 1 millón de iteraciones. ¿Algún consejo?
For each();<BR />
Gracias.
Automatización y secuencias de comandosRe: Optimizar el bucle para correr más rápido@jthi
Para cada