|
임펠리테리입니다.
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메가의 메모리를 기본적으로 잡아먹으며 그리고 엄청난 속도의 컴파일로
:
: 컴파일 되더군요...흑.
:
:
: 이건 어떻게 해결해야하는지영??
|