C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[576] [답변] MERBOK/ 어디까지가 중용인가요?/프포
박지훈.임프 [cbuilder] 5336 읽음    1998-08-28 06:06
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당자 임펠리테리입니다.

정말 중요하지만 민감한 질문을 해주셨군요. 중용이라...

예를 들어서 말씀하신 것처럼, 이미지가 크다면 실행화일에 집어넣기 보다는 폼이

생성될때 읽어넣어주는 것이 실행화일의 크기를 줄이기 위해서는 고려해볼만한 사항

입니다. 하지만, 동적생성에 있어서는 실행화일의 크기가 주된 문제가 아니라 사용

하는 총 리소스의 크기가 문제가 됩니다. 일단 윈도우 컨트롤이라면 당연히 리소스

를 잡아먹게 되고, 리소스는 윈도 커널 전체를 통틀어 한정된 것이기 때문에 너무

많이 사용하게 되면 자체 프로그램 뿐 아니라 실행중인 다른 프로그램의 정상적인

실행에 영향을 주게 됩니다. 예를 들어서 넷스케입을 수십개 띄우다 보면 어느정도

리소스가 소모된 이후에 이런 에러메시지를 보게 됩니다.

"Can't create null window" 정확한지는 모르겠지만 어쨋든 이와 비슷합니다. 이것

이 리소스를 모두 소모했을때 생기는 현상이죠. 더이상 창을 생성할 수 없다는 얘깁

니다. 또한 시스템 리소스가 90%이상 사용중일 때는 윈 95로부터 다음과 같은 메시

지를 받게 됩니다. "시스템의 리소스중 90% 이상이 사용중입니다.. 어쩌구.. 시스템

이 반응하지 않을 수도 있습니다.." 실제로 리소스가 너무 많이 소모되었을때 시스

템의 반응속도가 현저히 떨어지는 것을 볼 수 있습니다.

그래서 윈도우 프로그래밍을 하는 데 있어서는, 옛날 도스프로그래밍에서 화일크기

와 실행속도가 화두였듯이, 리소스 소모량을 최소화하는 것이 새로운 화두가 되었습

니다. 예를 들어, 제가 작성중인 프로젝트에 폼이 모두 수십개쯤 되고, 그중 열개

정도가 자주 사용하는 폼이 아니라 가끔씩 한번 사용하는 정도라면, 동적생성을 통

해 리소스 소모량을 줄이는 것을 고려해볼수 있습니다. 동적으로 생성하면, 생성시

부터 파괴때까지만 리소스를 차지하고, 생성하지 않았을때는 리소스를 잡아먹지 않

으니까요. 폼 하나를 동적으로 생성하면, 당연히 그에 속한 컨트롤들의 핸들들도

동적으로 생성되고, 당연히 그폼을 생성하지 않았을때는 리소스를 차지하지 않습니

다.

컨트롤이나 폼을 동적으로 생성하는 것은, 리소스 소모량을 줄이는 외에 다른 이점

이 있는데, 그것은 사용할 갯수를 예측할 수 없는 컨트롤의 생성입니다. 예를 들어

acdsee와 같은 그래픽 화일 브라우저를 만들고, 거기서 썸네일 모드를 지원하려고

한다면, 현재 디렉토리의 화일 갯수만큼의 이미지 컴퍼넌트가 필요할 것입니다. 이

런 경우엔 동적 생성이 필수겠죠.

동적생성 여부를 물으시면서 중용이란 어휘를 쓰셨는데, 정말 딱 맞는 단어라고 생

각합니다. 어떤 컨트롤을 동적으로 생성할까말까, 말 그대로 중용의 문제죠. 이 폼

이 자주 쓰인다고 판단을 해야하나 아님 자주 안쓰인다고 판단을 해야 하나? 어쨌든

저의 경우에는 화면에 항상 나타날 폼 외에는 몽땅 동적으로 생성을 합니다. 하지만

화면에 항상 나타날 컨트롤을 동적으로 생성하는 것은 별로 의미가 없겠죠. 종료시

까지 리소스를 계속 차지하게 될테니, 동적으로 생성하더라도 얻는 이점이 없습니

다. 예를 들어서 말씀하신 이미지 컨트롤의 동적생성이 그러한 문제죠~

만약 동적으로 생성한다고 해도 대상 컨트롤이 하나라면 실행화일 크기에는 영향을

미치지 않습니다. 만약 같은 종류의 컨트롤이 수십개단위가 넘는다면 상당한 영향이

있겠군요. 하지만, 반면에 동적생성을 한다면 몇줄정도 코드가 많아지는 건 당연한

거구요.

중용이라고 하셨죠. 사실 말하자면 저도 이 중용의 문제를 확실히 답변해 드리기 힘

듭니다. 모든 프로그래머에게 이 문제는 각자의 스타일일 뿐입니다. 스스로 판단하

실 문제란 뜻이죠.

그럼 도움되시길 바라면서, 이만....




독립문에서 임펠리테리였습니다.

(cbuilder, skyhi18, cbuilder@thrunet.com)



+ -

관련 글 리스트
574 [질문] 어디까지가 중용인가요?/프포 merbok 5276 1998/08/28
576     [답변] MERBOK/ 어디까지가 중용인가요?/프포 박지훈.임프 5336 1998/08/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.