3장. 스크립 수행
스크립 수행
문제점을 분리하기 위해 스크립을 코멘트화.
긴 시간 수행 스크립은 POST.
오브젝트 생성시 영향을 주는 이벤트.
- Open 이벤트
- Activate 이벤트
- 각 컨트롤의 Consructor 이벤트
- GetFocus 이벤트
- Show와 Resize 이벤트
OpenWithParm()이나 OpenSheetWithParm()으로 윈도우 간에 데이터 교환시 스트럭춰를 사용하기 보다는 유저오브젝트를 사용.
머신코드로 컴파일
장점:
-.변수참조.
-.수학적 계산이나 할당.
-.로직을 전개하기 위한 IF, CHOOSE, FOR, DO 등의 문장
-.함수 호출
-.스크립에 관련된 사항만 향상
제한 사항:
-.해당모듈 호출
-.데이터 윈도우 성능
-.데이터 조회
예:Retrieve() - 함수는 빠르게 호출되나 서버나 네트웍에는 영향을 미치지 못함
화면 재생성
어떤 처리(조회,,,)시 SetRedraw()사용
속성지정
컬럼 참조시 Dot Notation(.)을 가급적 자제한다.
SetItem,GetItem()사용한다.
ll_id=dw_1.GetItemNumber(1,"emp_id")
데이터윈도우간 데이터 이동시 속도가 빠른 순서
1.ShareData()
2.RowsCopy(), RowsMove()
3.직접지정:dw_1.object.date = dw_2.object.data
4.GetItem()/SetItem() LOOP
루프
이 방식보다는
FOR li_index = 1 TO UpperBound(li_array) //매번 UpperBound()를 수행한다
이 방식이 유리
int li_array_len
li_array_len = UpperBound(li_array)
FOR li_index = 1 TO li_array_len
동적배열
1.정적배열이 유리하나 동적배열 사용시는 반대로 카운트한다.
FOR li_index = 1 TO li_max
:
NEXT
보다는
FOR li_index = li_max TO 1 STEP -1
:
NEXT
이 유리하다.(약20%향상)
2.배열초기화
int originarray[]
int dummyarray[]
originarray = dummyarray
3.함수에서 배열을 교한 할 경우에는 Pass by reference나 Read Only사용
변수
동일이벤트나 함수 내에서 변수 선언 장소는 문제되지 않음.
Any 데이터 타입은 사용자제
함수
해당 오브젝트에 포함하는 함수가 광역 함수보다 유리.
지정과 미지정은 동일.
wf_save()
Parent.wf_save()
성능비교(속도가 빠른 순위)
-.정적이벤트와 정적함수
-.TriggerEvent()함수
-.동적함수
-.동적 이벤트
고려할 그 외 사항
단축 지정 문장이 유리.
코멘트 삭제 - RetrieveRow,SystemError 이벤트에는 되도록 삭제.
자주 발생하는 이벤트에는 되도록 짧게 작성(MouseMove,Other...).
CHOOSE CASE와 IF / ELSEIF의 속도는 같다.
오브젝트 참조시 ParentWindow()함수를 계속 사용하기 보다는 변수선언이 유리
2021.06.07 - [PowerBuilder] - 파워빌더 성능관리 [1장. 개요]
파워빌더 성능관리 [1장. 개요]
1장. 개요 사용자와 개발자의 성능관점 차이 사용자 : 성능이라는 것은 실행 시 시스템이 실행명령에 얼마나 빨리 응답하느냐는 것이다. 개발자 : 성능은 다음과 같은 사항을 고려 ▶ 서버의 부
www.entity.co.kr
2021.06.07 - [PowerBuilder] - 파워빌더 성능관리 - [2장. 해당 실행 모듈 호출]
댓글