Notice
Recent Posts
Recent Comments
- Today
- Total
내 머릿속 데이터베이스
VB 프로그래밍시 속도향상을 위한 45가지 팁 본문
출처 : 넷인터님의 블로그(http://blog.naver.com/netinter)
1. 프로젝트를 컴파일하기 전에, 베이직을 종료하고, 컴퓨터를 재시작하라.
그리고, 프로젝트를 컴파일하게 되면, 메모리에 남아 있는 자질구레한 변수들이 사라지게 되고, 파일 사이즈를 줄일 수도 있다.
2. 프로젝트를 컴파일하기 전에 사용하지 않는 변수와 서브 프로시져, 선언문, 컨트롤 같은것을 제거하라. 이것은 파일크기를 상당히 줄여줄 것이다.
3. 프로그램을 종료할 때는 END문을 사용하라.
프로그램의 종료코드나 QueryUnload이벤트에 End문을 사용하면 프로그램이 메모리에 남아 있지 않도록 해 준다.
4. Variant 변수 사용을 자제하라.
변수를 선언할 때 형식을 지정해 주지 않으면 베이직은 자동으로 그 변수를 Variant형식으로 지정하게 되는데, Variant형식의 변수는 매우 느리기 때문에 프로그램의 성능을 저하시키는 원인이 된다.
5. 폼의 선언부에 Option Explicit문을 추가하라.
Option Explicit문을 추가하게 되면, 선언되지 않는 변수는 사용할 수 없게 되므로, 프로그램의 오류를 줄일 수 있다.
6. 컨트롤명을 작게 만들어라.
폼이름이나 컨트롤의 이름은 EXE파일에 추가된다. 따라서 이러한 이름들을 작게 만들면 프로그램의 크기를 줄일 수 있다.
7. 주석을 많이 사용하라.
주석문은 EXE파일에 추가되지 않는다. 대신에 주석문을 많이 사용하게 되면 프로그램 소스의 가독성이 증가되므로, 프로그램 생산성 및 유지보수가 용이해 진다.
8. 스크린 해상도에 주의하라.
사용자의 컴퓨터는 항상 같은 스크린 해상도를 갖는 것은 아니다.
따라서, 낮은 해상도에서 만든 프로그램은 높은 해상도를 갖는 스크린에서는 문제가 될 수 있다. 물론 그 반대의 경우도 가능하다.
9. 프로젝트를 텍스트형식으로 저장하라.
이진형식으로 저장된 프로젝트는 다른 편집기에서 편집하기에도 불편할 뿐더러,실행파일의 크기를 증가시키는 원인이 된다.
10. 프로젝트를 자주 저장하라.
커다란 프로젝트 작업을 하거나, API로 작성된 코드를 실행할 때는 프로그램이 비정상으로 종료되는 경우가 발생된다. 이런 경우엔 지금까지 작업한 코드가 사라지게 되므로 자주 저장하는 습관을 기른다.
11. TEMP디렉토리의 임시파일을 제거하라.
응용프로그램은 여러개의 임시파일을 만드는데, 이 임시파일은 시스템의 성능을 저하시키는 원인이 되기도 한다. 자주 확인해서 삭제해 주는 것이 시스템의 성능을 향상시키는 효과를 볼 수 있다. 그러나 실행중인 프로그램의 임시파일을 삭제하면 프로그램이 비정상적으로 종료하므로 주의해야 한다.
12. Database Transaction을 사용하면 Database 처리 속도를 향상시킬 수 있다.
13.Move메소드는 Top, Left프로퍼티를 설정하는 것보다 빠르다.
14. Msgbox는 Breakpoint가 설정되면, 디버깅할 때 이벤트 순서를 변경할 수 있다.
15. Logical/Integer필드에서 0이 아닌 값을 사용하는 것 보다는 True를 사용하는 것이 빠르다.>= 0 Then보다
If ANumber Then이 빠르다.
16. 여러라인을 들여쓰기를 하거나 혹은 들여쓰기를 취소할 때는 단축키를 사용하면 효과적이다. Tab키는 선택된 라인을 들여쓰기 하고, Shift-Tab키는 선택된 라인의 들여쓰기를 해제한다.
17. 컨트롤배열을 사용하지 않고, 폼에 같은 컨트롤을 여러개 만들려면, 컨트롤을 누를때 Ctrl키를 누르거나, 혹은 원하는 컨트롤 아이콘을 Drag시키면 된다.
18. 폼을 디자인할 때 컨트롤을 빠르게 폼에 놓으려면, 컨트롤 아이콘을 더블클릭하라.
그러면 폼의 중간에 컨트롤들이 나타날 것이다.
19. 픽쳐박스나 폼의 AutoRedraw속성을 True설정하면 픽쳐박스나 폼의 내용이 왜곡되지는 않겠지만, 메모리를 많이 차지하는 요인이 되기도 한다.
20. 개체 프로퍼티 윈도우를 호출할 때, 보통 오른쪽 마우스 클릭을 사용하지만, F2키를 누르면 [개체 찾아보기]윈도우가 호출된다.
21. Boolean변수를 토글할 때는 IF...Then...Else를 사용하는 것 보다는
PreviewOn = Not PreviewOn 과 같이 하는 것이 빠르다.
22. Image컨트롤은 PictureBox컨트롤보다 훨씬 빠르다.
23. 문자열 크기를 검사할 때,> 0 Then보다는
If Len(SomeString$) Then이 빠르다.
24. 두 변수를 효율적으로 스왑하려면 다음 코드를 이용한다.
a = a Xor b: b = a Xor b: a = a Xor b
이렇게 하면 A와 B의 두 변수는 스왑된다.
이 팁은 대부분의 프로그래밑 언어에서 작동한다.
25. 간단하고 효율적인 코드는 저성능의 컴퓨터에서도 효과적으로 작동한다.
26. 컨트롤이 갖는 기본 속성을 이용하면 속도를 증진시킬 수 있다.
텍스트박스를 사용할 때는 txtBox.Text보다는 txtBox가 빠르고,
라벨컨트롤을 사용할 때는 lblLabel.Caption보다는 lblLabel이 빠르다.
27. 작업할 때는 가능한한 작은 크기의 데이타형식을 사용하라.
Long형식이나, Double형식보다는 Integer형식이 빠르다.
28. 디버깅작업할 때, Breakpoints대신에 Debug.Print를 사용하라.
프로그램의 흐름의 중지하지 않고도 효과적인 디버깅이 가능하다.
29. 가능한 한 작은 수의 컨트롤을 사용하라.
컨트롤을 많이 사용하게 되면 프로그램의 성능이 저하되는 원인이 된다.
메모리와 자원도 많이 차지할 뿐더러, 실행속도도 느려지게 된다.
30. 적은 오버헤드로 그래픽을 그리려면 폼에 직접 그래픽을 그리면 된다.
31. SQL문을 사용하는 것 보다는 Index를 이용한 VB코드를 사용하는 것이 빠르다. SQL은 느리기 때문에 같은 동작을 하는 SQL문을 실행하는 것보다 인덱스를 이용한 VB 코드를 사용하는 것이 빠르다.
--->> 이 부분에 대해서는 저 자신은 잘못된 것이라고 생각합니다.
SQL문이 VB코드보다 훨씬 빠릅니다. 실례로 제가 우편번호 자동입력기능을 구현하려고 한 적이 있었습니다. 텍스트박스에서 동이름을 입력하고 엔터키를 치면 주소와 우편번호가 자동으로 입력되도록 한 것이었습니다. 물론 동일한 이름이 존재할 때는 선택할 수있는 창이 뜨구요. 근데 여기서 비베코드를 사용할때는 상당한 시간 지연이 있었습니다. 우편번호자료는 거의 8000개 정도가 되니까요. 그래서 SQL문을 사용했는데 아주 빠른 속도를 보였습니다. SQL은 데이터베이스 전용언어이기때문에 데이터베이스부분에서는 반드시 필요한 부분입니다. 참고로 아주 적은 자료량에서는 비베 코드가 오히려 빠를 수도 있습니다.
32. 비슷한 작업을 하는 컨트롤을 배열로 작성하면 코드의 양을 줄일 수 있을 뿐만 아니라, 처리속도도 향상된다.
33. 간단한 작업을 처리하는 함수는 함수보다는 해당 코드를 작업을 원하는 프로시져에 직접 코딩하는 것이 빠르지만, 좀 복잡해지거나, 길어지는 코드는 함수로 작성하면 디버깅도 쉬울 뿐만 아니라, 코드의 양을 줄여 속도도 향상시킬 수 있다.
34. 다국어를 지원하고자 한다면 리소스파일을 이용하면 별다른 작업 없이도 다국어를 지원할 수 있는 어플리케이션을 만들 수 있다.
35. 조건문을 이용할 때는 For~Next문을 이용하는 것이 가장 빠르다.
36. 리스트박스에 많은 양의 데이터를 한꺼번에 넣을 경우엔 리스트박스를 ReDraw하기 때문에 속도가 현저하게 느려지는데, 이럴 경우엔 LockWindowUndate API를 사용하면 된다.
37. 명령버튼의 Click이벤트를 발생시킬려면, Value값을 True로 설정하면 되는데, 이것보다는 직접 프로시져를 호출하는 것이 빠르다.
Call cmdADD_Click
이것은 명령버튼 뿐만 아니라, 다른 컨트롤에도 동일하게 적용된다.
38.파일에서 배열을 읽고 기록할 때 하니씩 읽는 것보다는 블럭단위로 하는 것이 속도가 빠르다.
39. 파일을 읽거나 기록할 때는 2진형식으로 작업하는 것이 빠르고, 다양한 작업을 처리할 수 있다.
40. 비슷한 작용을 하는 상수는 배열로 묶어 사용하면 편리하게 이용할 수 있다.
41. 많은 양의 조건을 처리하는 상황에서는 정상적인 경우를 앞쪽에 모으고, 비정상적인 경우를 뒤쪽에 모으면, 가독성도 높아지고 더욱 효율적이 된다.
42. 자주 사용하는 문자열은 상수로 선언해서 사용하면 코드양도 줄일 수 있고, 더욱 효과적이다.
43. 간단한 조건검사문이라면 If이나, Select문보다는 IIF나 Switch문을 사용하는 것이 효과적이다.
44. 코드에서 함수나 서브루틴, 프로퍼티 루틴을 쉽게 찾으려면 Shift-F2키를 누르면 된다.
45. 변수형식 선언을 쉽게하려면, Def를 이용하면 된다.
DefInt i - i로 시작하는 것은 모두 Integer형식....
DefStr s, c - s나 c로 시작하는 것은 모두 String형 변수....
DefInt i-k - i에서 k로 시작하는 것은 모두 Integer형 변수....
DefBool (Boolean)
DefByte (Byte)
DefLng (Long)
DefCur (Currency)
DefSng (Single)
DefDbl (Double)
DefDec (Decimal)
DefDate (Date)
DefStr (String)
DefObj (Object)
DefVar (Variant)
이상이 베이직에서 사용하는 변수지정문이다.
1. 프로젝트를 컴파일하기 전에, 베이직을 종료하고, 컴퓨터를 재시작하라.
그리고, 프로젝트를 컴파일하게 되면, 메모리에 남아 있는 자질구레한 변수들이 사라지게 되고, 파일 사이즈를 줄일 수도 있다.
2. 프로젝트를 컴파일하기 전에 사용하지 않는 변수와 서브 프로시져, 선언문, 컨트롤 같은것을 제거하라. 이것은 파일크기를 상당히 줄여줄 것이다.
3. 프로그램을 종료할 때는 END문을 사용하라.
프로그램의 종료코드나 QueryUnload이벤트에 End문을 사용하면 프로그램이 메모리에 남아 있지 않도록 해 준다.
4. Variant 변수 사용을 자제하라.
변수를 선언할 때 형식을 지정해 주지 않으면 베이직은 자동으로 그 변수를 Variant형식으로 지정하게 되는데, Variant형식의 변수는 매우 느리기 때문에 프로그램의 성능을 저하시키는 원인이 된다.
5. 폼의 선언부에 Option Explicit문을 추가하라.
Option Explicit문을 추가하게 되면, 선언되지 않는 변수는 사용할 수 없게 되므로, 프로그램의 오류를 줄일 수 있다.
6. 컨트롤명을 작게 만들어라.
폼이름이나 컨트롤의 이름은 EXE파일에 추가된다. 따라서 이러한 이름들을 작게 만들면 프로그램의 크기를 줄일 수 있다.
7. 주석을 많이 사용하라.
주석문은 EXE파일에 추가되지 않는다. 대신에 주석문을 많이 사용하게 되면 프로그램 소스의 가독성이 증가되므로, 프로그램 생산성 및 유지보수가 용이해 진다.
8. 스크린 해상도에 주의하라.
사용자의 컴퓨터는 항상 같은 스크린 해상도를 갖는 것은 아니다.
따라서, 낮은 해상도에서 만든 프로그램은 높은 해상도를 갖는 스크린에서는 문제가 될 수 있다. 물론 그 반대의 경우도 가능하다.
9. 프로젝트를 텍스트형식으로 저장하라.
이진형식으로 저장된 프로젝트는 다른 편집기에서 편집하기에도 불편할 뿐더러,실행파일의 크기를 증가시키는 원인이 된다.
10. 프로젝트를 자주 저장하라.
커다란 프로젝트 작업을 하거나, API로 작성된 코드를 실행할 때는 프로그램이 비정상으로 종료되는 경우가 발생된다. 이런 경우엔 지금까지 작업한 코드가 사라지게 되므로 자주 저장하는 습관을 기른다.
11. TEMP디렉토리의 임시파일을 제거하라.
응용프로그램은 여러개의 임시파일을 만드는데, 이 임시파일은 시스템의 성능을 저하시키는 원인이 되기도 한다. 자주 확인해서 삭제해 주는 것이 시스템의 성능을 향상시키는 효과를 볼 수 있다. 그러나 실행중인 프로그램의 임시파일을 삭제하면 프로그램이 비정상적으로 종료하므로 주의해야 한다.
12. Database Transaction을 사용하면 Database 처리 속도를 향상시킬 수 있다.
13.Move메소드는 Top, Left프로퍼티를 설정하는 것보다 빠르다.
14. Msgbox는 Breakpoint가 설정되면, 디버깅할 때 이벤트 순서를 변경할 수 있다.
15. Logical/Integer필드에서 0이 아닌 값을 사용하는 것 보다는 True를 사용하는 것이 빠르다.>= 0 Then보다
If ANumber Then이 빠르다.
16. 여러라인을 들여쓰기를 하거나 혹은 들여쓰기를 취소할 때는 단축키를 사용하면 효과적이다. Tab키는 선택된 라인을 들여쓰기 하고, Shift-Tab키는 선택된 라인의 들여쓰기를 해제한다.
17. 컨트롤배열을 사용하지 않고, 폼에 같은 컨트롤을 여러개 만들려면, 컨트롤을 누를때 Ctrl키를 누르거나, 혹은 원하는 컨트롤 아이콘을 Drag시키면 된다.
18. 폼을 디자인할 때 컨트롤을 빠르게 폼에 놓으려면, 컨트롤 아이콘을 더블클릭하라.
그러면 폼의 중간에 컨트롤들이 나타날 것이다.
19. 픽쳐박스나 폼의 AutoRedraw속성을 True설정하면 픽쳐박스나 폼의 내용이 왜곡되지는 않겠지만, 메모리를 많이 차지하는 요인이 되기도 한다.
20. 개체 프로퍼티 윈도우를 호출할 때, 보통 오른쪽 마우스 클릭을 사용하지만, F2키를 누르면 [개체 찾아보기]윈도우가 호출된다.
21. Boolean변수를 토글할 때는 IF...Then...Else를 사용하는 것 보다는
PreviewOn = Not PreviewOn 과 같이 하는 것이 빠르다.
22. Image컨트롤은 PictureBox컨트롤보다 훨씬 빠르다.
23. 문자열 크기를 검사할 때,> 0 Then보다는
If Len(SomeString$) Then이 빠르다.
24. 두 변수를 효율적으로 스왑하려면 다음 코드를 이용한다.
a = a Xor b: b = a Xor b: a = a Xor b
이렇게 하면 A와 B의 두 변수는 스왑된다.
이 팁은 대부분의 프로그래밑 언어에서 작동한다.
25. 간단하고 효율적인 코드는 저성능의 컴퓨터에서도 효과적으로 작동한다.
26. 컨트롤이 갖는 기본 속성을 이용하면 속도를 증진시킬 수 있다.
텍스트박스를 사용할 때는 txtBox.Text보다는 txtBox가 빠르고,
라벨컨트롤을 사용할 때는 lblLabel.Caption보다는 lblLabel이 빠르다.
27. 작업할 때는 가능한한 작은 크기의 데이타형식을 사용하라.
Long형식이나, Double형식보다는 Integer형식이 빠르다.
28. 디버깅작업할 때, Breakpoints대신에 Debug.Print를 사용하라.
프로그램의 흐름의 중지하지 않고도 효과적인 디버깅이 가능하다.
29. 가능한 한 작은 수의 컨트롤을 사용하라.
컨트롤을 많이 사용하게 되면 프로그램의 성능이 저하되는 원인이 된다.
메모리와 자원도 많이 차지할 뿐더러, 실행속도도 느려지게 된다.
30. 적은 오버헤드로 그래픽을 그리려면 폼에 직접 그래픽을 그리면 된다.
31. SQL문을 사용하는 것 보다는 Index를 이용한 VB코드를 사용하는 것이 빠르다. SQL은 느리기 때문에 같은 동작을 하는 SQL문을 실행하는 것보다 인덱스를 이용한 VB 코드를 사용하는 것이 빠르다.
--->> 이 부분에 대해서는 저 자신은 잘못된 것이라고 생각합니다.
SQL문이 VB코드보다 훨씬 빠릅니다. 실례로 제가 우편번호 자동입력기능을 구현하려고 한 적이 있었습니다. 텍스트박스에서 동이름을 입력하고 엔터키를 치면 주소와 우편번호가 자동으로 입력되도록 한 것이었습니다. 물론 동일한 이름이 존재할 때는 선택할 수있는 창이 뜨구요. 근데 여기서 비베코드를 사용할때는 상당한 시간 지연이 있었습니다. 우편번호자료는 거의 8000개 정도가 되니까요. 그래서 SQL문을 사용했는데 아주 빠른 속도를 보였습니다. SQL은 데이터베이스 전용언어이기때문에 데이터베이스부분에서는 반드시 필요한 부분입니다. 참고로 아주 적은 자료량에서는 비베 코드가 오히려 빠를 수도 있습니다.
32. 비슷한 작업을 하는 컨트롤을 배열로 작성하면 코드의 양을 줄일 수 있을 뿐만 아니라, 처리속도도 향상된다.
33. 간단한 작업을 처리하는 함수는 함수보다는 해당 코드를 작업을 원하는 프로시져에 직접 코딩하는 것이 빠르지만, 좀 복잡해지거나, 길어지는 코드는 함수로 작성하면 디버깅도 쉬울 뿐만 아니라, 코드의 양을 줄여 속도도 향상시킬 수 있다.
34. 다국어를 지원하고자 한다면 리소스파일을 이용하면 별다른 작업 없이도 다국어를 지원할 수 있는 어플리케이션을 만들 수 있다.
35. 조건문을 이용할 때는 For~Next문을 이용하는 것이 가장 빠르다.
36. 리스트박스에 많은 양의 데이터를 한꺼번에 넣을 경우엔 리스트박스를 ReDraw하기 때문에 속도가 현저하게 느려지는데, 이럴 경우엔 LockWindowUndate API를 사용하면 된다.
37. 명령버튼의 Click이벤트를 발생시킬려면, Value값을 True로 설정하면 되는데, 이것보다는 직접 프로시져를 호출하는 것이 빠르다.
Call cmdADD_Click
이것은 명령버튼 뿐만 아니라, 다른 컨트롤에도 동일하게 적용된다.
38.파일에서 배열을 읽고 기록할 때 하니씩 읽는 것보다는 블럭단위로 하는 것이 속도가 빠르다.
39. 파일을 읽거나 기록할 때는 2진형식으로 작업하는 것이 빠르고, 다양한 작업을 처리할 수 있다.
40. 비슷한 작용을 하는 상수는 배열로 묶어 사용하면 편리하게 이용할 수 있다.
41. 많은 양의 조건을 처리하는 상황에서는 정상적인 경우를 앞쪽에 모으고, 비정상적인 경우를 뒤쪽에 모으면, 가독성도 높아지고 더욱 효율적이 된다.
42. 자주 사용하는 문자열은 상수로 선언해서 사용하면 코드양도 줄일 수 있고, 더욱 효과적이다.
43. 간단한 조건검사문이라면 If이나, Select문보다는 IIF나 Switch문을 사용하는 것이 효과적이다.
44. 코드에서 함수나 서브루틴, 프로퍼티 루틴을 쉽게 찾으려면 Shift-F2키를 누르면 된다.
45. 변수형식 선언을 쉽게하려면, Def를 이용하면 된다.
DefInt i - i로 시작하는 것은 모두 Integer형식....
DefStr s, c - s나 c로 시작하는 것은 모두 String형 변수....
DefInt i-k - i에서 k로 시작하는 것은 모두 Integer형 변수....
DefBool (Boolean)
DefByte (Byte)
DefLng (Long)
DefCur (Currency)
DefSng (Single)
DefDbl (Double)
DefDec (Decimal)
DefDate (Date)
DefStr (String)
DefObj (Object)
DefVar (Variant)
이상이 베이직에서 사용하는 변수지정문이다.
Comments