Re : Optimiser la boucle pour courir plus viteQu'essayez-vous de faire ?
Re : Optimiser la boucle pour courir plus viteAvez-vous essayé le Profileur dans le débogueur pour déterminer où est passé la plupart du temps ?
Re : Optimiser la boucle pour courir plus viteVoici l'approche que j'adopterais.J'ai simplifié le code pour rendre l'approche plus évidente.Sur mon système, chaque colonne est traitée en 2,25 secondes environ.
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 : Optimiser la boucle pour courir plus vite@txnelson Merci Jim. J'ai essayé votre approche sur 1 million de lignes, et cela a pris environ 3,5 minutes.

Re : Optimiser la boucle pour courir plus viteIl est très probable que j'ai gâché les colonnes et les lignes de la matrice à un moment donné, mais je n'ai pas le temps de les réparer maintenant et cela n'est pas testé avec un ensemble de données plus grand que celui fourni.
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 : Optimiser la boucle pour courir plus viteÇa marche, Jarmo. Merci beaucoup. Vous êtes génial 
Optimiser la boucle pour courir plus viteBonjour,
Bonne année!
Existe-t-il un moyen d'accélérer le traitement ?J'ai essayé de l'utiliser pour chaque , et cela a permis de gagner du temps. J'essaie de savoir si je peux optimiser en utilisant le Formule de colonne
Voici ma boucle for. Il faut très longtemps pour exécuter plus d'un million d'itérations. Aucun conseil?
For each();<BR />
Merci.
Automatisation et scriptsRe : Optimiser la boucle pour courir plus vite@jthi
Pour chaque