Computer/ASP

펌) ASP 성능 향상 TIP.

알찬돌삐 2011. 11. 29. 09:48
[ASP성능 향상 팁]

1.   Option Explicit를 명시한다. 쓰지도 않는 변수들이 생기면 그만큼 메모리 낭비가 생기므로...

2.   배열사용 시 배열 재할당은 최대한 피한다.

3.   배열 사용이 빈번할 시 Dictionary 객체를 이용하여 가독성을 높인다.

4.   Stored Procedure를 사용한다. (일반 ASP자체 쿼리보다 최고 30% 성능 향상.)

5.   뷰테이블 사용 시 뷰테이블 자체에서 정렬을 해야 한다. 이미 만들어진 뷰테이블을 이용하여 Asp 코드에
서 정렬하면 속도가 크게 떨어진다. 최고 50%까지 느려지는 것을 목격했음.

6.   Query를 사용할 때 꼭 필요한 컬럼만 명시하여 불러오거나 이용해야 한다. SQL은 아주 정직해서 불러오
는 컬럼의 갯수(레코드 수가 동일하다고 가정시)에 비례하여 시간이 걸린다.

7. Recordset 객체 보다는 Command 객체를 이용하는 것이 빠르다. 10%정도의 향상을 볼 수 있었다.

8. Recordset 객체 사용시 CursorLocation를 적절한 것을 사용해야 한다. (1, 서버, 3. 클라이언트) 속도의 차
이가 클 수 있다. CursorType도 영향을 미친다. 반드시 테스트 필요. 보통은 CursorLocation은 클라이언트
에 두는 것이 추세다. 테스트때 클라이언트에 커서를 두었을때 서버에 두었을때보다 속도가 최고 3배이상 빨
라지는 것을 경험했다.

9.   1000글자가 넘어가는 문장의 경우는 변수에 담아서 한번에 Response.Write 하는 것보다는 한줄한줄 직
접 뿌려주는 것이 빠르다. <%= %>를 이용해 직접 뿌리는 것이 가장 빠르다. 괜히 변수에 잔뜩담아서 
Response.write 해보라 -_-;;; 아마 글자수의 제곱에 비례하여 느려질 것이다 -_-;;;

10.  사용한 객체는 반드시 Close, Nothing 해준다. 안해주면 메모리 누수가 일어난다. 웹서버들이 잘 죽는 경
우는 반드시 이것을 체크해야 한다.

11.  다중레코드를 이용할 시에는 Do until, Rs.MoveNext 구문보다는 GetRows() 함수를 이용하는 것이 빠르
다.(Stored Procedure와 함께 사용시 최고 40% 성능 향상, 단독으로 사용시 최고 20% 성능 향상.)

12.  사용자 Function을 만들어 쓰는 것이 디버깅 등에 좋다.

13. ADODB 객체 사용보다 OBJECT 객체를 사용하여 컨넥션, 레코드셋을 연다.

[잘못알려진 내용들]

1.  Inlcude를 많이 시키면 속도가 느려진다고 일반적으로 알려져 있지만 실제로는 속도차이가 전혀 없다.

2. 긴문장이나 Html과 Asp 태그를 혼합해서 많이 쓰면 느려진다고 알려져 있으나 실제로는 차이가 없거나 혼
합해서 쓰는 것이 오히려 빨랐다. 오히려 긴 Html 태그를 asp 변수에 담아 Response한 결과 1000글자가 넘어
갈 수록 단순히 혼합해서 쓴 소스의 수행시간의 제곱에 비례하게 느려지는 것이 발견되었다.

3. 뷰테이블에 아무리 많은 테이블, 컬럼들을 Join 해도 단일 테이들의 같은 수의 컬럼을 사용하는 속도와 동
일하다.

.

'Computer > ASP' 카테고리의 다른 글

ASP 서버 변수 출력  (0) 2011.11.29
펌) 페이징 쿼리문 비교  (0) 2011.11.29
펌) dext업로드 컴포넌트에 대해서..  (0) 2011.11.29
펌) asp에서 디비작업 최적화하기  (0) 2011.11.29
ASP CDONTS 메일 발송  (0) 2011.11.29