Ri: Ottimizza il ciclo per correre più veloceCosa stai cercando di fare?
Ri: Ottimizza il ciclo per correre più veloceHai provato il Profiler all'interno del debugger determinare dove viene trascorso la maggior parte del tempo?
Ri: Ottimizza il ciclo per correre più veloceEcco l'approccio che vorrei adottare.Ho semplificato il codice per rendere l'approccio più ovvio.Sul mio sistema, ogni colonna viene elaborata in circa 2,25 secondi.
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);Ri: Ottimizza il ciclo per correre più veloce@txnelson Grazie Jim. Ho provato il tuo approccio su 1 milione di righe e ci sono voluti circa 3,5 minuti

Ri: Ottimizza il ciclo per correre più veloceMolto probabilmente ad un certo punto ho incasinato colonne e righe della matrice, ma non ho tempo di risolverle ora e questo non è stato testato con un set di dati più grande di quello fornito
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>Ri: Ottimizza il ciclo per correre più veloceFunziona, Jarmo. Molte grazie. Sei fantastico 
Ottimizza il ciclo per correre più veloceCiao,
Buon Anno!
C'è un modo per rendere l'elaborazione più veloce?Ho provato a usarlo per ciascuno , e ha fatto risparmiare un po' di tempo. Sto cercando di capire se posso ottimizzare utilizzando il file Formula di colonna
Ecco il mio ciclo for. Ci vuole molto tempo per eseguire oltre 1 milione di iterazioni. Qualche consiglio?
For each();<BR />
Grazie.
Automazione e scriptingRi: Ottimizza il ciclo per correre più veloce@jthi
Per ciascuno