Re: 함수를 작성하고 호출하면 실행 시간이 크게 단축되는 이유는 무엇입니까? 그리고 가장 효율적인 시간/공간 복잡성을 위해 JSL을 작성하는 경험 법칙은 무엇입니까?나도 그것을 기대하지 않을 것입니다. 매개 변수 복사 및 로컬 변수 설정과 관련된 함수 호출에 약간의 오버헤드가 있습니다.
그러나... 사용 가능한 메모리의 절반 이상을 사용하는 거대한 배열이 있는 경우 함수에서 로컬 변수를 사용하면 메모리가 다시 필요하기 전에 메모리가 해제되는지 확인할 수 있습니다.이 JSL을 고려하십시오.
x = J(20000,20000,0);
...
x = J(20000,20000,0);
첫 번째 할당에는 3GB의 메모리가 필요합니다. 두 번째 할당은 첫 번째 할당을 해제하기 전에 추가 3GB가 필요합니다(x를 덮어쓸 때). x가 전역이 아닌 함수의 로컬인 경우 마지막에 로컬 x를 잊어버리면 x에 대한 메모리가 해제됩니다. 기능의. 그렇지 않은 경우 4GB 시스템은 x를 대체할 새 메모리의 메모리를 0으로 만드는 동안 이전 x를 디스크로 페이징합니다. 그런 다음 디스크에 페이징한 내용을 잊어버립니다.
당신이 하고 있는 일처럼 들린다면, 이것을 증명하기 위해 시도해 보십시오:
x = J(20000,20000,0);
...
x=0; // forget the old allocation first
x = J(20000,20000,0);
Re: 함수를 작성하고 호출하면 실행 시간이 크게 단축되는 이유는 무엇입니까? 그리고 가장 효율적인 시간/공간 복잡성을 위해 JSL을 작성하는 경험 법칙은 무엇입니까?...그리고 hptime()은 마이크로초 함수입니다. (고성능? hp가 무엇을 의미하는지 잘 모르겠습니다.)
함수 작성 및 호출이 실행 시간을 크게 단축할 수 있는 이유는 무엇입니까? 그리고 가장 효율적인 시간/공간 복잡성을 위해 JSL을 작성하는 경험 법칙은 무엇입니까?안녕하세요 여러분,
내 작업 중 하나는 Fit Life by X를 사용하여 신뢰도 분석을 수행하는 것입니다.
이렇게 하면 다음을 출력하는 두 개의 JSL 스크립트가 있습니다. 정확히 같은 결과 하지만 가지고 다양한 코딩 접근법 .
첫 번째 접근 방식은 여러 개의 코드 조각을 함께 계단식으로 연결하는 것입니다. 의사 코드는 다음과 같습니다.
// Plot Fit Life by X #1
Fit Life by X(...);
// Plot Fit Life by X #2
Fit Life by X(...);
// Plot Fit Life by X #3
Fit Life by X(...);
// And so on
두 번째는 다른 X, Y 및 검열 열로 반복되는 단일 함수를 가집니다. 의사 코드는 다음과 같습니다.
// Function that contains Fit Life by X
reli_analysis = function(
{input parameters},
{local variables},
Fit Life by X(...);
);
// Call the above function multiple times
reli_analysis(input parameters set #1);
reli_analysis(input parameters set #2);
reli_analysis(input parameters set #3);
// And so on
내가 경험한 것은 두 번째 코드가 첫 번째 코드보다 거의 10배 정도 더 빠르다는 것입니다. (실제 데이터 세트가 있는 실제 JSL의 실행 시간(벽시계 시간을 통해 측정)은 코드 #2에서 ~17초와 코드 #1에서 ~170초입니다.)
다음과 같은 세 가지 질문이 있습니다.
1. 모든 코드를 명시적으로 작성하는 것보다 함수를 호출하는 것이 훨씬 빠른 이유는 무엇입니까?
2. 내 코드가 가장 효율적인 시간 및/또는 공간 복잡성을 갖도록 하기 위해 일반적으로 수행해야 하는 다른 방법/팁은 무엇입니까?
3. JSL에 CPU 시간 및 벽시계 시간과 같은 타이밍 기능이 내장되어 있는지 잘 모르겠습니다. 나는 today() 함수를 사용하여 코드 실행 시간을 측정했지만 수동 코딩이 많이 필요합니다. 또한 이렇게 계산된 경과 시간은 실행 중인 다른 작업이 있는지 여부에 따라 항상 조금씩 다릅니다.
도와 주셔서 정말 감사합니다.
JMP 버전: 17.0
자동화 및 스크립팅품질 및 프로세스 엔지니어링윈도우Re: 왜 함수를 작성하고 호출하면 실행 시간이 상당히 빨라질 수 있을까요? 그리고 가장 효율적인 시간/공간 복잡도를 위해 JSL을 작성하는 경험칙은 무엇인가요?또 다른 가능성: 이전 차트가 열려 있고 데이터 테이블이 새 차트를 만들기 위해 변경되고 있다면, 이전 차트가 데이터 테이블의 각 변경에 응답하고 있을 수 있습니다. 함수 버전이 이전 차트를 더 빨리 닫을 수도 있을까요?