[팁/VB] 프로그래밍 최적화 방법 <1> Option Explict 변수선언요구를 설정해 두고 코딩을 하라.
(도구-옵션에서 설정 가능함)
<2> 변수의 Variant 사용을 제한하라.
(Long -> Integer -> Byte 순으로 사용 32BIT CPU)
<3> VB 에서 자체적으로 제공하는 함수들을 최대한 활용하라.
;예를 들어, 24-Feb-1973 이란 형태의 날짜형식을
1973-02-24 일로 바꾼다고 할 때, 일반적으로 Select Case 문과
문자열함수 등을 이용하여 코딩을 할 수도 있지만,
VB 에서 제공하는 Format() 함수를 이용하면 단 한 줄로
처리가 가능하다. Msgbox Format("24-Feb-1973","yyyy-MM-dd")
<4> 사용하는 컨트롤들을 하나씩 만들어 사용하지 말고
배열로 생성시켜 활용하라.(메모리와 디스크하드절약)
<5> 변수명은 최대한 짧게, 헝가리안 표기법을 준수하라.
<6> 한글변수명은 피하고, 한글은 데이타로만 사용.
<7> Code 상에서 아래와 같이 Property연산은 하지 말 것.
For i= 1 To 10
Text1.Text = Text1.Text + 1
Next i
<8> IF 문 보다는 Select Case 문이 더 효율적이며, 최종적으로는
Choose 문을 사용하라.
<9> 상수를 많이 사용할 것. (상수는 컴파일 될 때 한번만 처리됨)
<10> 프로시저 인수전달 중 값에 의한 전달(ByVal) 이 참조에 의한
전달(ByRef) 보다 빠르게 처리된다.
예를 들어서 임의의 어떤 프로퍼티가 노출하는 클래스 멤버 변수의 자료형이 크기가
1,024 인 배열인 경우에는 어떻게 프로퍼티를 구현하는 것이 보다 효율적인 것일까?
지금까지 해왔던 것과 같은 방식으로 프로퍼티를 작성한다면 그 배열 자체를 통채로 주고
받는 방법밖에는 대안이 없다. 아니면 원하는 인덱스에 존재하는 문자열 자료를 리턴받는
메소드를 새로 작성해야 한다.
이 두 방법 중에서 첫 번째 방법은 그야말로 무식한 방법이라고 말할 수 있다. 크기가
1,024 인 배열의 모든 인덱스에 각각 한글 10 글자로 이루어진 문자열 데이터가
존재한다고 생각해 보면 단순 계산으로도 배열 전체의 크기는 모두 1024 X 10 X
2 = 20,480 Byte 가 된다. 단지 몇 글자로 이루어진 문자열 하나를
설정하거나 얻기 위해서 매번 20,480 Byte 의 데이터를 통채로 이동시키는 것은
말 그대로 무식한 짓이다.
사실 VBScript 의 클래스에서도 ByVal 키워드와 더불어 ByRef 키워드가
지원되기는 한다. 익히 알고 있는 것처럼 인자를 선언할 때 ByRef 키워드를 함께
사용하면 런타임시에 데이타의 전체값이 복사되는 것이 아니라 단지 데이터의 참조가
전달되므로 불필요한 오버로드를 줄일 수 있다.
그러나 이것 또한 근본적인 해결책은 아닌 셈이다. 왜냐하면 당장 VBScript
의 클래스에서야 ByRef 키워드를 사용하는 것으로 문제를 해결한다고 하지만, 이와
같은 문제는 Microsoft Visual Basic 6.0 을 사용하여 작성한
클래스, 즉 COM / COM+ 컴포넌트에서도 동일하게 발생하기 때문이다.
특히나 서버간 원격 호출이 발생하거나 COM+ 응용 프로그램 설정과 IIS 에서의
WAM (Web Application Manager) 등의 설정이 복잡하게 얽혀 들어서
컴포넌트의 인스턴스가 서로게이트 (Surrogate) 인 DLLHOST.EXE 의
프로세스 안에서 생성되는 상황에서는 아무리 DLL 형식의 컴포넌트라 할지라도 결국
Out-Of-Process 컴포넌트와 같이 프로세스간 마샬링이 일어나고, 아이러니하게도
ByRef 키워드보다는 ByVal 키워드가 더 권장되는 상황이 발생하게 된다.
추가부연설명출처
http://www.egocube.pe.kr/asp_0008.asp
<11> Nothing 을 이용하여 불필요한 메모리를 해제하라.
(Set Form = Nothing)
<12> 경제적 컨트롤을 주로 사용하라.
(Label > Textbox , Image > Picture)
<13> Erase 문을 사용하여 동적배열을 비워라.
(Erase DArray)
<14> 폼,컨트롤 AutoRedraw 를 True 로 하면 폼/컨트롤 이미지를
메모리에 저장해 둔다. <15> 배포판 작업 전 소스화면을 모두 닫고, 재부팅 한 후
컴파일 하라.
<16> 불필요한 코드는 제거하라.
주석 ' 은 실행에 아무런 영향을 주지 않으니
많이 사용해도 무방하다. *
출처 http://YAHOO.sy.to |