효율적인 행 상태 코딩안녕하세요, 저는 JSL에서 행 상태를 변경하는 가장 빠른 방법을 찾으려고 노력하고 있습니다. 일반적으로 행을 가져오는 것()보다 느리기 때문에 행을 선택하지 않으려고 노력하지만 행 상태를 변경하기 위해 행렬이나 행 목록을 사용하는 방법을 알 수 없습니다. 상태를 변경하려면 행을 선택해야 합니까?
약간 관련된 질문: 색상 팔레트가 스크립트 가능합니까? "colorbox()" 표시 상자가 표시되지만 스크립팅 색인에는 해당 플랫폼에서만 액세스할 수 있다고 나와 있습니다. 몇 가지 해결 방법을 찾을 수 있었기 때문에 꼭 필요한 것은 아닙니다. 이것이 의미하는 바의 예는 여기 코드 아래에 나와 있습니다.
감사해요,
마이크
//Clear Log();
Names Default To Here( 1 );
dt = open( "$SAMPLE_DATA\Big Class.jmp");
//get rows where; not sure what to do with this
myRows = dt << get rows where(:height == 63);
// use select where works but could be slower
dt << select where(:height == 63);
dt << exclude(1);
dt << colors("Red");색상 팔레트, 사용자 기본 설정의 예:

Re: 효율적인 행 상태 코딩네, 저는 JMP의 온라인 도움말을 검토할 때 그 사실을 잊어버리고 가끔 생각나는 경향이 있습니다.나는 아마도 "select where()"를 사용했고 나중에는 제외된 행을 처리하는 것과 관련하여 편의를 위해 "rows where()"를 얻고 사양 제한보다 위/아래에 있는 행을 신속하게(실행 측면이 아닌 코딩 측면에서) 잡아내었을 것입니다. 나는 1과 0을 포함하는 제외()의 별도 열 행렬을 얻고 단지 곱할 수 있다고 가정합니다. 누락된 값을 올바르게 처리하는 한 아마도 잘 작동하고 빠르게 실행될 것입니다.
Re: 효율적인 행 상태 코딩나도 반도체 산업에 종사했는데, 많은 대규모 애플리케이션에서 데이터 테이블 기능을 처리하는 것보다 파라메트릭 데이터를 매트릭스로 이동하고 다양한 매트릭스 기능을 사용하는 것이 훨씬 빠른 방법이라는 것을 알았습니다.
Re: 효율적인 행 상태 코딩고마워요 짐. "선택"보다 "가져오기"를 선택하는 습관은 vba와 jsl 모두에서 수년간의 느린 스크립트 결과 이후 뿌리깊은 것입니다. 그러나 행뿐만 아니라 각 열을 통해 반복해야 하는 경우를 주로 생각하고 있다고 가정합니다. .
다음은 반도체 테스트 데이터에 관한 몇 가지 시나리오입니다. 여기서 각 행은 생산 시 테스트되는 장치이고 각 열(인덱스 열 뒤)은 장치에 대한 매개변수 테스트입니다. 각 열에는 속성으로 저장된 사양 제한이 있습니다.하나의 스크립트는 열 단위로 반복하여 수율, 높은 쪽 및 낮은 쪽 폴아웃 등을 결정합니다(다른 많은 것들이 있지만 관련이 없습니다).일반적으로 반도체 데이터의 경우 첫 번째 실패 시 중지하여 테스트되므로 실패 오른쪽 열이 누락될 수 있습니다. 대신 데이터가 실패 시 계속 테스트된다면 '실패 시 중지'로 변환하는 것이 좋을 수 있습니다. 그래서 첫 번째 실패 시 중지 데이터로 변환하는 스크립트도 있습니다.이 두 경우 모두 행을 가져오기 위해 where()를 변경하고 where()를 선택하면 스크립트 실행 시간이 크게 향상되었습니다. 테이블이 보이지 않으면 select where()를 사용하는 것이 더 빠를 수도 있습니다. 나는 이것을 확인하지 않았습니다.
하지만 행 상태의 경우 한 번만 반복하므로 이제 한발 물러서서 생각해 보면 그다지 나쁘지 않을 것입니다.
다음은 실패 시 중지 스크립트에 대한 두 가지 스크립트 버전의 스크린샷입니다. 이 변경으로 인해 실행 시간이 크게 달라졌습니다.
그리고 완전히 다른 주제는 내가 그것을 문자열로 분석하는 이유일 수도 있습니다. 돌아가서 이것을 다시 살펴봐야 했지만 몇 년 전에는 문자열로 구문 분석하는 것이 훨씬 빠르다는 것을 알았습니다. 그러나 그것은 여전히 select where() 문이 있는 동안이었을 것입니다.

Re: 효율적인 행 상태 코딩색상 팔레트 질문에 대한 답변은 없지만 Select Where와 Get Rows Where를 빠르게 실행하여 거의 차이를 발견하지 못했습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
start = HP Time();
For( i = 1, i <= N Rows( dt ), i++,
dt << select where( :NPN1 > :npn1[i] )
);
Show( "select where", Format( (HP Time() - start) / 100, "Hr:m:s" ) );
start = HP Time();
For( i = 1, i <= N Rows( dt ), i++,
dt << select where( :NPN1 > :npn1[i] )
);
Show( "get rows", Format( (HP Time() - start) / 100, "Hr:m:s" ) );
결과는 다음과 같습니다.
"어디를 선택하세요";= "2:51:55";
"행 가져오기"; = "2:50:40";