Bonjour la communauté JMP,
Dernièrement, je cherchais à améliorer les performances de mes scripts JSL internes et j'ai trouvé les problèmes de performances suivants que j'aimerais résoudre.
Prenons le script suivant (JMP 17.2 PRO fonctionnant sur macOS) :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
values = Column( dt, 1 )[dt << get rows where( Excluded( Row State() ) != 1 )];
new window("test",
lb = list box( values, nlines(10), width(100), ),
b = button box("reset", reset_lb),
);
reset_lb = expr(
lb << remove all();
lb << append(values);
Nnames = N Items(values);
for(i = 1, i <= Nnames, i++,
lb << set selected(i);
);
);Dans certains de mes scripts, j'utilise des zones de liste mises à jour dynamiquement. Pour modifier le contenu des list box, j'utilise les fonctions << remove() et << append() , elles fonctionnent très bien mais j'ai peur que cette méthode ne s'adapte pas très bien au nombre de lignes, une autre partie qui étonnamment fonctionne très lentement est la boucle for avec << set selected(), apparemment c'est la seule méthode que j'ai pu trouver pour sélectionner tous les éléments dans une zone de liste mais elle évolue terriblement avec le nombre de lignes.
Ma question est de savoir s'il existe des moyens les plus connus de mettre à jour le contenu des zones de liste qui ne ralentissent pas en termes de performances. Je recherche des alternatives possibles qui feraient :
- méthode optimale pour définir le contenu de la zone de liste.
- moyen rapide de sélectionner tous les éléments de la zone de liste.
Tout commentaire ou suggestion serait grandement apprécié.