하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진나는 긴 테이블을 서브 세트하기 위해 여러 가지 방법을 사용했다. (100KB를 넘는 행, 매우 일반적인 데이터 테이블 크기). 부분 집합을하기 전에 표에서 작업을 의미하는 행을 선택해야하기 때문에 문제가 발생합니다. 테이블이 길면 테이블이 매우 느립니다. 특히 새 매개 변수를 하위 집합으로 지정하여 플롯을 생성하는 데 foor 루프가 필요한 경우 특히 그렇습니다.
그것은 당신이 사용하는 것이 중요하지 않습니다, 그것은 단지 느립니다 : JMP 팀이 서브 셋팅 속도를 높이는 어떤 해결책을 가지고 있는지 확실하지 않습니다 ??????
행을 선택하십시오.
행을 가져오다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진왜 데이터 테이블을 하위 집합으로 지정합니까?
원하지 않는 데이터를 선택하고 숨기기 및 제외 행 상태를 설정하고 플롯을 만들고 다음 그룹에 대해 반복하십시오.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진또한 필터를 사용하여 동일한 작업을 수행 할 수 있습니까?
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진데이터를 선택하면 문제가 발생한다는 것을 분명히 언급 한 것 같습니다. 속도가 느려집니다.
그러나 나는 당신이 제안하고있는 것을 이해할 수 없을지도 모릅니다. JSL 예제를 제공 할 수 있습니까? 나는 그것이 사물의 속도를 높이면 분명히 노력할 것입니다.
감사
램
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진@Dan_Obermiller
필터 팝업없이 for 루프에서 JSL을 추가 할 수 있습니까?
감사
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진행을 어디서 또는 심지어 행만 사용하면 문제가 발생하지 않습니다. 실제로 선택하지 않아도됩니다.
names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
rows = dt << Get Rows Where(:sex == "M");
dt_sub = dt << Subset(rows(rows));
행을 선택하기 위해 무엇을 사용하고 있습니까? 그것은 천천히 일어날 수 있습니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진하위 집합을 지정하지 않고 그룹별로 분석하는 방법에 대한 간단한 예제가 있습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Reset the data table row states
dt << clear row states;
// Find the different values for Sex
Summarize( byGroup = By( :sex ) );
// Loop across the different groups and analyze them
For( i = 1, i <= N Items( byGroup ), i++,
// Reset the data table row states
dt << clear row states;
// Hide and Exclude the unwanted rows
dt << select where( :Sex != byGroup[i] );
dt << hide and exclude;
// Run the analysis
ow = dt << oneway( x( :age ), y( :height ) );
// Change the title of the report to show what data are in the analysis
Report( ow )[Outline Box( 1 )] << set title(
Report( ow )[Outline Box( 1 )] << get title || ": Sex=" || byGroup[i]
);
);
// Reset the data table row states
dt << clear row states;
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진스크립트에서 여러 가지가 진행되고있는 것처럼 들리 겠지만, 선택, 부분 집합, 보고서 작성, 모두 루프 안에 있습니다. 나는 샘플 스크립트를 보는 것이 도움이 될 것이라고 생각한다. 선택은 어떻게 이루어 집니까? 서브 세트가 원본 데이터 테이블에 링크되어 있습니까? 어떤 플랫폼이 생성되고 있습니까? 이 루프의 반복이 몇 번 실행됩니까? 서브 세트 테이블이 링크되어 있고 보고서에 자동 재조정이 사용 가능한 경우, 이전의 모든 보고서가 소스 테이블에서 선택 사항에 대한 통지를 수신하므로 각 반복마다 프로세스가 느려질 수 있습니다. 이것이 문제라면, 다른 보고서에서 제안한 데이터 필터 방식을 사용하면 각 보고서가 루프의 다음 반복에서 격리되므로 문제를 해결할 수 있습니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진 @vince_faller 현재 나는 같은 방법을 사용하고 있습니다. 하지만 파일 크기가 커지면 행 행렬이 더 커지고 느려집니다.
당신이 작은 데이터 테이블을 사용한다면
<SPAN class="token string">Big Class.jmp</SPAN>
, 아무것도 작동 할 수 있습니다. 큰 데이터 파일에 문제가 있습니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진@txnelson
aproach에는 두 가지 문제점이 있습니다.
1. 당신은 "더 큰 테이블에 대한 진정한 근본 원인 인 select where ("를 사용합니다. 일단 당신이 어디에 행 선택 (내 경우에는> 300K 행)의 데이터 테이블을 업데이 트하는 작업을 선택 사용하면 파일 크기도 계산되지 않습니다 빅 클래스를 사용하고 있습니다.
2. 아래 상황에서는 작동하지 않습니다.
섹스에 대한 X_axis = "M"에 대한 높이 데이터와 섹스에 대한 Y_axis의 높이 데이터 = "F"를 상관 시켜야만한다면.
나는 그것이 당신에게 지금 문제를 undestand 도움이되기를 바랍니다 Logged
감사
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진@ 단시 코레
iterations의 숫자가 아닙니다. 그것은 큰 파일 크기가있을 때 느린 행 선택입니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진이 백만 개의 행이있는 표가 있습니다. 그것은 실행하는 데 6 초의 시간이 걸립니다. 아마도 스크립트와 관련이 있습니다. 처럼 @ 단시 코레 당신이 느린 실행 예제 스크립트를 주면 우리가 당신을 도울 수있을 것이라고 말했다.
Names Default to Here( 1 );
dt = New Table("Test",
Add Rows(1000000),
New Column("X", Character, <<SET each="" value=""></SET>
부진한 사람이 6 분의 1을 부르면, 나는 당신에게 무엇을 말해야할지 모르겠다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진이 백만 개의 행이있는 표가 있습니다. 그것은 실행하는 데 6 초의 시간이 걸립니다. 아마도 스크립트와 관련이 있습니다. Dan이 말한 것처럼, 천천히 실행되는 예제 스크립트를 제공하면 우리는 당신을 도울 수 있습니다.
Names Default to Here( 1 );
dt = New Table("Test",
Add Rows(1000000),
New Column("X", Character, <<SET each="" value=""></SET>
부진한 사람이 6 분의 1을 부르면, 나는 당신에게 무엇을 말해야할지 모르겠다.
또한, for 루프를 사용하여 각 매개 변수에 대한 일련의 플롯을 생성하는 경우 by를 사용하지 않는 이유가 있습니까?
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진어쩌면 선택 기준이 매우 복잡하고 그로 인해 속도가 느려질 수 있습니다. 귀하가 다음을 제공하지 않으면 더 이상 당신을 도울 수 없습니다 :
1. 스크립트
2. 데이터 샘플 (필요한 경우 익명 처리)
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진@pmroz
@vince_faller
순수한 이론가 대신 여기 연습하는 것.
다음은 몇 가지 추가 된 열이있는 스크립트입니다. 실행에 따라 결과가 최대 2 초가 걸릴 수 있습니다. 또한 대기 시간 (0)을 추가하여 표시 시간을 업데이트 할 수 있습니다.
이번에는 두 개의 파일을 하위 집합으로 나누었습니다. 그런 다음 스크립트로 찍은 추가 시간을 몇 가지 기준에 따라 두 파일에 결합 할 수 있습니다. 그리고 나서 이변 량 차트를 만든다. 정말 느려집니다.
하나의 많은 데이터가 충분한 속도입니다. 하지만 몇 가지 더 많이 추가하면 ......
Try(close(datatable("Test"),nosave));
dt = New Table("Test",
Add Rows(1000000),
New Column("X", Character, <<SET each="" value=""></SET>
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진우리는 당신이 실제로하고있는 것을 우리에게 말하지 않았기 때문에 이론적 인 것들을 할 수 있습니다.
그래서 이것을 실행할 때 하나의 테이블 (두 개가 아닌)에 대해 나에게 약 0.3 ~ 0.4 초가 걸렸습니다. 나는 그것이 완전히 합리적이라고 생각한다. 하위 집합과 함께 여러 가지 다른 작업을 수행하는 경우 하위 집합이 느리다는 것이 타당하지 않습니다. 이 루프를 for 루프에서 실행하면 for 루프에서 문제를 일으키는 것일 수 있습니다. 스크립트를 실행중인 경우 사용자가 테이블을 볼 필요가 없다면 대기 (0)하지 마십시오. 실제로 불필요한 시간을 렌더링하거나 사용하지 않도록 비공개로 설정해야합니다.
당신은 실제로 무엇을하려고합니까? 나는 이것이 마치 XY 문제 .
실제로 무엇을하고 있는지 알려 주시면 속도를 높이는 데 도움이 될 것입니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진당신의 "행을 어디에서 가져와야합니까?"라는 질문은 얼마나 복잡한가? 당신이 게시 한 것은 단 하나의 가치만을 찾고 있기 때문에 꽤 빠르지 만, 더 복잡한 쿼리를 사용하면 성능이 느려집니다.
다음은 하위 집합을 보이지 않게하고 개인화함으로써 하위 집합 명령의 시간차를 보여주는 간단한 예제입니다.
dt = data table("Probe");
t1 = hp time();
new_rows = dt << get rows where(:Process == "New");
t2 = hp time();
old_rows = dt << get rows where(:Process == "Old");
t3 = hp time();
//s1 = dt << subset(rows(new_rows), invisible);
s1 = dt << subset(rows(new_rows), private);
t4 = hp time();
//s2 = dt << subset(rows(old_rows), invisible);
s2 = dt << subset(rows(old_rows), private);
t5 = hp time();
tn = t2 - t1;
to = t3 - t2;
ts1 = t4 - t3;
ts2 = t5 - t4;
print("New rows: " || char(tn));
print("Old rows: " || char(to));
print("New subset: " || char(ts1));
print("Old subset: " || char(ts2));
보이지 않는 부분 집합 타이밍 :
"New rows: 1095"
"Old rows: 964"
"New subset: 3527"
"Old subset: 3366"
개인 서브셋 타이밍 :
"New rows: 949"
"Old rows: 883"
"New subset: 1861"
"Old subset: 1638"
보이지 않는 상태에서 개인 상태로 변경하면 하위 집합 시간이 절반으로 줄어 듭니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진내 컴퓨터는 정말 바쁘기 때문에 숫자는 조금씩 다르지만 링크 된 하위 집합으로 변경하고 대기를 제거하면 도움이됩니다. 대기를 제거하는 것은 대략 보이지 않는 것과 같습니다. 측정에서 테이블의 페인트 대 스크린을 가져옵니다. 링크 된 하위 집합을 사용하면 더 이상 많은 데이터를 이동할 필요가 없기 때문에 큰 효과가 있습니다.
st=HPTIME();
rows = dt << Get Rows Where(:X == "C");
dt << Subset(rows(rows),outputtable("sub1"),"linked");
rows = dt << Get Rows Where(:X == "B");
dt << Subset(rows(rows),outputtable("sub2"),"linked");
//wait(0);
st=1e-6*(HPTIME()-st);
print(char(st)|| " Sec");
"2.534772 초"- 대기와 연결 해제 됨 (0)
"1.50435 초"- 연결 해제 됨
"0.467098 초"- 연결됨
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진그것의 소리에서, 당신은 열에 의해 테이블을 부분 집합하고 함께 결합합니다. 당신은 예를 들어 그것을 단순화했을 수도 있지만 Y (높이, 성 == M), X (높이, 성 == F)를 그렸으면 좋겠다. 나는 테이블을 분할 할뿐입니다. 이 두 스크립트 (부분 집합 및 조인과 분할)는 분할이 약 3 분의 1이 걸린다는 것을 보여줍니다.
names default to here(1);
dt = new table("Test",
add rows(1000000),
New column("sex", character, <<SET each="" value=""></SET>
또한 Linked를 사용하면 열 이름과 기타 속성을 변경할 수 없으므로 열의 이름을 변경할 수 없으므로 조인은 조금 더 못 생깁니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진여기 내가하는 일에 대한 간단한 개요가 있습니다. 이것을 기억하는 가장 간단한 형태의 datatable과 script는 실제와 비교하여 여전히 빠릅니다. 나는 이것을 내 생각에 썼고 평균 2 초를 얻었습니다. 어떤 사람들은 이것이 나쁘지 않다라고 말합니다. 그러나 우리는 인간 시간이 아닌 컴퓨터 시간에 대해 이야기하고 있음을 기억하십시오. 2 초는 WW2 시간주기와 같습니다.
당신은 그것이 얼마나 나쁜지를 알기 위해 이것을 시도 할 수 있습니다 : "행 추가 (1000000)"에서 10의 인자로 행 수를 줄이고 늘리십시오.
Try(close(datatable("Test"),nosave));
dt = New Table("Test",
Add Rows(1000000),
New Column("X", Character, <<SET each="" value=""></SET>재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진가장 큰 문제는 업데이트 / 가입에 대해 언급하지 않았을 수 있습니다.

재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진@안녕하세요 @ram_asra_gmail_ ,
이것이 속도면에서 얼마나 많은 이슈를 도입하는지는 확실하지 않지만, 결과 측면에서 확실하게 알 수 있습니다. 업데이트 구문이 올바르지 않습니다. 업데이트를 사용하는 일치 항목에 대한 적절한 지정은 일치하는 항목 ()과 일치하는 항목 ()이 아닙니다. 후자는 행 테이블 방식으로 원본 테이블에 업데이트 테이블을 붙입니다. 실제로는 실제로 일치하는 것보다 빠를 가능성이 큽니다. Join을 사용하면 "일치하는 항목으로 ()"입니다.
다음은 Update에 대한 올바른 구문입니다.
datatable("sub1") << update(
With( Data Table( "Sub2" ) ),
Match Columns( :X1 = :X2, :P1 = :P2 )
);
확실하게 유일한 일은 계속하고 있지 않다. 그러나 만일 그것이 다른 곳에서 얼룩을지게되지 않으면 나는 언급해야한다라고 생각했다!
@ 율리안
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진예, 이것은 부분 집합 테이블과 거의 관련이 없습니다. 이 스크립트를 100 줄로 가져올 수 있으며 여전히 7 초가 걸립니다.
나의 첫 번째 제안은 각 이변량을 독립적으로 실행하지 않는 것입니다. 평가하고 추가하지 않도록 플랫폼 (또는 vlistbox () 내부)으로 실행하십시오. 그럼 끝까지 보여주세요. 방금 3 초 동안 나를 데려왔다. 스크립트가 첨부되어 있습니다.
하지만 실제로 데이터 테이블을 분할하려고하는 것처럼 보입니다. 분할 기능은 아마도 이것을 수행하는 것보다 낫습니다. 어떤 이유로 든이 일을 그렇게해야만한다면. 모든 dt_sub1 테이블을 by 열과 함께 연결하고 한 번에 모두 실행합니다. 그러나 이것은 1 톤에 최적화 될 수있을 것입니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진에 의해 참조 된 수정 된 구문 @ 율리안 감소 된 행 수 10,000의 평균 실행 시간을 가졌습니다. 2.45 초 (나는 또한 bivariates를 보이지 않게했다).
업데이트를 보이지 않는 조인으로 바꾸면 평균 실행 시간이 0.67 초. 이것에 중요했던 것은 이변 수법에 필요하지 않은 컬럼을 떨어 뜨리는 것이었다. 그들을 떨어 뜨리지 않으면 상당히 느려질 것입니다.
조인이 병목이면 가상 조인을 수행하는 것이 좋습니다. 그렇게하려면 먼저 조인의 고유 키가 될 단일 열을 작성해야합니다.
재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진이 트릭이 시간을 줄이는 데 도움이 될 수 있다고 생각합니다. 나는 이미 보이지 않는 부분 집합을 이용한다. 그러나 그것은 그렇게 많이 할 수 있습니다.
몇 가지 실험을 해 주셔서 감사합니다.재 : 하위 설정 테이블에서 JMP의 가장 큰 문제는 .... 부진 @Craige_Hales 연결된 하위 집합은 많은 시간을 줄일 수 있습니다. 하지만 나는 두 가지를 게시 한 스크립트를 확인해야합니다.
1. 반복함으로써 평균 평균 시간을 얻습니다.
2. 난 여전히 XY 차트를 만들기 위해 두 개의 하위 집합 테이블에 가입 할 수 있습니다.
감사