|
박지훈.임프 님이 쓰신 글 :
: 임펠리테리입니다.
:
: Use dynamic RTL 옵션을 선택하고 말고에 따라 메모리 소모량이 차이가 나는 것은, 이 dynamic RTL 이라는
: 게 이름 그대로 dll이기 때문입니다.
: dll을 사용하는 경우에는 그 실행파일을 실행할 때 dll을 함께 끌고 메모리에 로드되게 됩니다.
: 당근 메모리 소요량은 실행파일+dll이지요.
: 반면 dll을 사용하지 않을 경우, 그 dll에 포함된 코드들 중 현재 프로그램에 필요한 부분만 정적으로 실행
: 파일에 링크됩니다. 그래서 실행파일 자체는 조금 더 커져도 dll을 로드하지 않기 때문에 전체 메모리 소요량은
: 더 적어지지요.
: 이 dynamic RTL을 이용하는 이점이 나타나는 것은, 두개 이상의 모듈이 같은 dll을 사용할 경우입니다.
: dll은 기본적으로는(아닐 경우도 있습니다) 두번째 호출 부터는 메모리 소요량은 똑같이 많아보이지만
: 실제로는 첫번째로 로드된 인스턴스를 매핑만 하므로 메모리를 소요하지 않습니다.
: 결론적으로, 프로젝트가 상당히 커서 각각의 실행파일이나 dll 등으로 나누었을 경우, 각각의 모듈들이
: 몽땅 정적으로 링크되었다면 실제 메모리 소요량은 모듈 수만큼 비례해서 증가할 것입니다.
: 이럴 때에 dll 링크를 사용하면 하나의 dll 인스턴스를 모두 공유하므로 메모리를 많이 아낄 수 있습니다.
: 이같은 점은 런타임 패키지를 이용할 때도 동일합니다.
:
: 두번째..
: 제 기억이 정확한지는 모르겠습니다만, 델파이의 경우 Use dynamic RTL 옵션이 없습니다. 항상 정적으로
: 링크하게 되지요. 위와 같은 이유로 해서 메모리가 더 적게 쓰이는 듯 하구요.
: 또 같은 조건을 맞추어준다고 하더라도, 아무래도 오브젝트 파스칼과 C++은 다른 언어이므로 약간의 차이는
: 있을 수 있습니다. 컴파일 속도와 컴파일된 바이너리코드의 최적화율에 대해서는 예전 도스시절부터 파스칼이
: C에 비해 약간 우위에 있었던 것도 사실입니다.
:
: 그럼 이만...
:
:
: 초보 님이 쓰신 글 :
: : 안녕하세요. 질문이 있는데엽
: :
: : Use RTL 체크 옵션을 없앤뒤에 다시 컴파일을 했습니당..
: :
: :
: : 그러니까 실행파일이 Run Time Library를 사용할 경우는
: :
: : 메모리를 무려 8-9 MegaBytes나 잡아 먹더니,
: :
: : RTL 체크를 없앤뒤 하니까 6 MegaBytes로 줄었군요..
: :
: :
: : 음 어떤 차이점인지 모르겠네엽..
: :
: :
: :
: : 글구 두번째는 Delphi5를 구해서 한번 기본 폼을 컴파일하였더니
: :
: : 2메가의 메모리를 잡아먹더군엽...오. 그리고 엄청난 컴파일 속도와..흑.
: :
: :
: : C++ Builder로 기본 폼을 컴파일 했습니다만,
: :
: : 무려 4.6메가의 메모리를 기본적으로 잡아먹으며 그리고 엄청난 속도의 컴파일로
: :
: : 컴파일 되더군요...흑.
: :
: :
: : 이건 어떻게 해결해야하는지영??
//--------------------------------------------------------------------
답변감사합니다.
임프님 만쉐~
|