大家好,JMP社区,
最近,我正在研究如何提高内部 JSL 脚本的性能,并发现了以下我想解决的性能问题。
让我们采用以下脚本(在 macOS 上运行的 JMP 17.2 PRO):
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);
);
);在我的某些脚本中,我使用了动态更新的列表框。为了更改列表框的内容,我使用了<< remove()和<< append()函数,它们工作得很好,但我担心这种方法不能很好地适应行数,令人惊讶的是,另一个运行速度非常慢的部分是带有<< set selected() 的 for 循环,显然这是我能找到的唯一一种选择列表框中所有项目的方法,但它的适应行数非常差。
我的问题是,是否有任何最知名的方法来更新列表框的内容,而不会降低性能。我正在寻找可行的替代方案:
- 设置列表框内容的最佳方法。
- 快速选择列表框的所有项目。
如有任何反馈或建议,我们将不胜感激。