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);
);
);내 스크립트 중 일부에서는 동적으로 업데이트되는 목록 상자를 사용하고 있습니다. 목록 상자의 내용을 변경하기 위해 < 및 < 함수를 사용했는데 잘 작동하지만 이 방법이 행 수에 따라 잘 확장되지 않는 것이 두렵습니다. 정말 느리게 실행되는 것은 << set selected()를 사용하는 for 루프입니다. 분명히 이것은 목록 상자의 모든 항목을 선택하기 위해 찾을 수 있는 유일한 방법이지만 행 수에 따라 엄청나게 확장됩니다.
내 질문은 성능이 저하되지 않는 목록 상자의 내용을 업데이트하는 가장 잘 알려진 방법이 있는지입니다. 나는 다음과 같은 가능한 대안을 찾고 있습니다.
- 목록 상자의 내용을 설정하는 최적의 방법입니다.
- 목록 상자의 모든 항목을 선택하는 빠른 방법입니다.
어떤 피드백이나 제안이라도 대단히 감사하겠습니다.