No.27 "Corticon Rulesheets에서 메가 슬롯이 어떻게 표현되는지 확인하십시오"
2018.05.25 Progress Corticon
이 항목은 Assist Co., Ltd. (https : //www.ashisuto.co.jp/product/category/brms/progress_corticon/column/detail/brmstech27.html)의 재 인쇄입니다.
|
이것은 2016 년 4 월부터 진행 제품을 담당 한 Tanahashi Hiroshi입니다.
나는이 기술 칼럼을 네 번 썼지 만 내용은 어렵다! 나는 이것을 지적 할 많은 기회가 있으므로 이번에는 간단한 칼럼으로 요약하고 싶습니다.
코르티콘의 코르티콘 세계에서 특정 수준에서 특정 판단을하는 과정을 설명 할 수 있으므로, 같은 판단조차도 글을 쓰는 사람에 따라 약간 다를 수 있습니다. 이 기사에서는 조건부 진술서를 작성하여 두 가지 다른 작문 방법의 차이점을 표현하고 싶습니다. 설계시 개발 정책 중 하나로 간주 할 수 있다면 감사하겠습니다.
메가 슬롯부 진술서 작성 방법
볼륨 속성 및 설정
엔티티 이름 | 속성 이름 | 데이터 유형 | 필수 | 모드 | 설명 |
테스트 | 엔티티 이름 | ||||
>69_word_end< | String | 아니오 | 과도 | 문자열 유형 작업 영역 | |
tgt_numeric | 정수 | 예 | 베이스 | 사전 정의 된 숫자 |
단순히 문자열 유형 속성과 정수 유형 속성이 있다고 생각합니다. 엔티티 이름, 속성 이름 및 필수 및 모드 설정을 무시하십시오.
이 어휘를 사용하여 다음 메가 슬롯을 구현합시다.
test.tgt_numeric의 값이 7 인 경우 test.>69_word_end<에 "7"값이 할당됩니다.
test.tgt_numeric의 값이 7이 아닌 경우 "Seven이 아닌"값이 test.>69_word_end<에 할당됩니다.
이 메가 슬롯을 작성할 때 아래 다이어그램과 같이 조건부 진술을 작성하는 두 가지 방법이 있습니다.
|
어디서 쓰시겠습니까? 성능 관점에서 이것을 살펴 보겠습니다. 다시 말해, 어떤 프로세스가 더 빠른지 알아 봅시다.
개발 언어로 작성된 프로그램에 사용 된 교육 속도의 처리 속도는 기계 언어로 대체 될 때 명령어 단어를 분석 할 수 있으므로 명령어 단어의주기 수에 의해 결정됩니다. 따라서이 명령이 빠르고이 명령이 느리다는 것을 객관적으로 결정할 수 있습니다. 그러나 Corticon은 메가 슬롯 시트를 최적화하므로 확인 및 확인보다 더 이상 할 일이 없습니다.
그러나, 다른 많은 인터럽트 처리 요소가 있기 때문에이 처리 시간 비교는 일반적으로 비교할 수 없으며, 순서 순서 수의 차이가 거의 감지되지는 않지만이 추세를 포착하기 위해 시험 수를 늘리고 싶습니다.
처리 시간을 측정하기위한 메가 슬롯 작성 (확장 연산자 생성)
Java7에서 측정 할 수있는 가장 작은 시간은 나노초이며 다음 방법을 사용할 수 있습니다.
긴 유형 System.nanoTime ()
속도 측정에 사용할이 방법을 사용하여 확장 연산자를 구현하십시오. 확장 연산자를 만드는 방법No.10 Corticon의 [Extension Operator] 및 [Service Callout]를 사용하여 메가 슬롯을 구현하는 방법 (2016 년 12 월 22 일)또는 Corticon의 확장 연산자 안내서 10 장 확장 플러그인 매뉴얼 생성이 자세히 설명되어 있으므로 참조하십시오.
이것은 아래에 생성 된 확장 연산자의 Java 소스입니다.
공개 클래스 확장 구현 ICCSTASTALONEEXTENSION
새로운 java.math.biginteger (long.tostring (wlong));
제쳐두고 Corticon은 이와 같이 우수한 확장 성을 가지고 있으므로 누락 된 방법을 만들고 전원을 켜십시오.
처리 시간을 측정하는 메가 슬롯 작성 -1-
볼륨 속성 및 설정
엔티티 이름 | 속성 이름 | 데이터 유형 | 필수 | 모드 | 설명 |
---|---|---|---|---|---|
테스트 | 엔티티 이름 | ||||
_end | Integer | 아니오 | 과도 | 끝에서 나노 초 | |
_nanotime | 정수 | 아니오 | 과도 | 계산 된 나노 초 | |
_start | 정수 | 아니요 | 과도 | 나노초 시작 | |
_times | 정수 | 아니요 | 과도 | 카운터 | |
>128_word_end< | 10 진수 | 아니요 | 베이스 | 계산 된 나노초 평균 | |
>133_word_end< | Decimal | 아니오 | 베이스 | 최대 계산 된 나노초 | |
>138_word_end< | Decimal | 아니요 | 베이스 | 최소 계산 된 나노초 | |
tgt_numeric | 정수 | 예 | base | 사전 정의 된 숫자 | |
Times | 정수 | 예 | 베이스 | 지정된 숫자의 사전 정의 된 번호 |
우리는 평균, 최대 및 최소 값을 얻기 위해 어휘를 구현하여 지정된 횟수를 추세하여 추세를 파악했습니다.
이 어휘를 사용하여 메가 슬롯을 만듭니다.
먼저, 초기화 프로세스를 수행 할 메가 슬롯 시트를 만듭니다.
|
ACTION A ACTION A A LINE, "카운터"는 0으로 설정됩니다. ACTION B ROW "계산 된 나노초 평균"은 0으로 설정됩니다. 위는 0 열에서 초기화 프로세스로 구현됩니다.
확대하려면 이미지를 클릭하십시오
필터는 "사전 정의 된 횟수"에 대한 제한을 설정합니다. 조건부 항목에 추가되면 복잡해질 수 있기 때문에 필터로 설정했습니다. 첫째, 행동에서 라인은 "카운터"가 증가합니다. ACTION B ROW는 구현 된 확장 연산자를 사용하여 "시작 나노 초"의 값을 얻습니다. 위는 조건의 0 열에서 초기화 처리로 구현됩니다.
t (true)/f (false) test.tgt_numeric이 조건에서 7인지 여부를 결정합니다. 그러나이 규칙의 목적은 조건 처리 시간을 측정하는 것이므로 조건부 분기 후 동일한 처리가 설정됩니다. 동작 C ROW에서, 조건이 결정된 후 "끝의 나노 초"의 값이 얻어진다. 분기 프로세스는 우리가 측정하고자하는 것이므로, 이와 같이 쓰여지고 t (true)와 f (false)를 모두 설정합니다. 동작 D ROW에서 "계산 된 나노 초"는 "나노 초"와 "나노 초기 시작"의 차이로 계산되고 test.nanoTime에 할당됩니다. Java의 System.nanoTime ()은 나노 초의 순간 값을 검색하는 방법이므로 차이를 계산하면 실제 시간이 계산됩니다. 동작 d 행에서, test.nanoTime의 평균은 "계산 된 나노초의 평균"으로 계산됩니다. 이번에 얻은 값은 수학적 용어로 "충분히 큰 값"이므로 계산 중에 오버플로 흐를 수 있습니다. 따라서 우리는 오버플로를 피하기 위해 그러한 계산을 정의합니다.
측정 목적으로는 필요하지 않을 수 있지만 계산 된 나노 초의 최대 및 최소값을 보유하는 규칙 시트를 만듭니다.
|
메가 슬롯 흐름에 초기 및 측정 프로세스를 배치하십시오.
|
처리 순서로 인한 "연결"사용.
규칙 테스트로 측정합시다.
|
100,000 번의 시도 후, 최대 값과 최소값 사이의 오차는 4,000 배 더 컸지 만 평균적으로 7 밀리 초에 도달했습니다.
처리 시간을 측정하는 메가 슬롯 작성 -2-
유사하게 비교할 메가 슬롯 시트 및 메가 슬롯 흐름을 만듭니다.
확대하려면 이미지를 클릭하십시오
다른 글쓰기 메가 슬롯을 제외하고는 모두 동일합니다.
|
규칙 테스트로 측정합시다.
|
100,000 번의 시도 후, 최대 값과 최소값은 15,000 배 증가했지만 평균적으로 8.5 밀리 초에 이릅니다.
측정 결과 고려
나는이 메가 슬롯을 구현하는 동안 2-3 배의 차이가있을 것으로 예상했지만 여러 번 수행 한 후에는 그 중 하나가 더 큰 값을 가질 수 없었습니다. 솔직히 말해서, 측정 단위가 너무 작고 오류가 너무 커서 트렌드를 파악하기가 어렵습니다.
반면에, 메가 슬롯 시트의 유지 가능성의 관점에서, 조건 판단이 t (true)/f (false)가 아닌 경우 미래에 두 가지 선택 조건 판단이 아닌 조건 판단을하는 것이 더 쉽습니다. 그리고 Corticon의 특성을 사용하기 위해 t (true)/f (false)를 사용하지 않는 것이 낫다고 생각합니다. Corticon은 스프레드 시트로 메가 슬롯을 관리합니다. 이는 두 가지 옵션이 아닌 우수한 다중 선택 옵션을 제공하는 메가 슬롯 정의 방법의 이점입니다.