C와 C++컴파일시 실행파일 크기가 많이 다르네요..
글쓴이: 버그소년 / 작성시간: 수, 2003/02/05 - 9:20오후
기존에 C로 되어있던 코드를 C++로 변경작업중입니다.
부분적으로 클래스로 묶어가며 작업중입니다.
소스량도 C++로 변경한것이 조금 더 적어젔더군요.
C코드의 함수들 몇몇을 클래스화 하며 반복되는 부분을 많이 줄였습니다.
그런데 실행파일의 크기는 C로 컴파일한것은 60K정도 되는데
C++로 컴파일한 것은 옵티마이즈 옵션을 줘도 350k가 넘어가네요.
각각 링크되는 오브젝트파일들의 크기를 합해보면,
C : 73223bytes, C++ : 42556bytes
이렇게 C++오브젝트 크기다 훨신 작습니다.
뭐.. 파일크기야 별 상관이 없지만 실행파일의 크기가 커지니까 성능
(속도)면에서 더 느려질것 같다는 걱정이 됩니다.
이렇게 실행파일의 크기가 커졌을때 어느정도의 속도저하가 있는지,
무시할 수 있는 정도인지... 아무튼..
고수님들의 노우하우나 경험담.. 기다리겠습니다.
Forums:
어려운 문제이군요.일단 단도직입적으로 말하자면 파일 크기와 실행
어려운 문제이군요.
일단 단도직입적으로 말하자면 파일 크기와 실행 속도와는 그리 직접적인 관계는 없습니다. 궂이 있다면 실행 파일을 디스크에서 로딩하는 속도랄까요?
문제는 그 실행파일이 실제 어떠한 코드로 이루어졌냐는 것입니다.
대개 high level 언어로 작성한 것은 overhead가 크겠죠. 그 overhead가 무섭다면 어셈블러로 완벽하게 짜면 되겠지만, 개발 시간이나 디버깅 시간이 만만치 않으므로, 일종의 tradeoff라 할 수 있겠죠.
C++로 짜면서 (시간) overhead를 줄이려면 글쎄요? 일단 virtual 함수는 최대한 줄이고, 가능하면 inline 함수를 쓰면 될 것 같습니다.
파일 크기는 크게 신경쓰지 않으셔도 될 것 같습니다. 문제는 어떠한 라이브러리를 쓰느냐, 어떤 코드(알고리즘)를 쓰느냐겠죠.
물론 제가 쓴 글은 속도로 최적화한다고 봤을 때 입니다.
파일 크기나 메모리 사용량을 최적화한다면 문제는 달라지겠지만요. :wink:
빠르기로 최적화한다면 파일 크기가 늘어나는 경우가 흔합니다. Inline기능이나, memory alignment등으로 말이죠.
여담으로, 제가 올린 글 중에서 이 글은 가장 아리송한? 답변이 될 것 같군요. 조금이나마 도움이 되었기를 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
위에 분께서 파일 크기와 실행 속도와는 그리 직접적인 관계가 없다고말
위에 분께서 파일 크기와 실행 속도와는 그리 직접적인 관계가 없다고
말씀하셨는데,
일반적으로 빠른 소스코드가 용량이 큰 경우가 많습니다.
스택을 쓰지 않고, 인라인 함수가 늘어나면 당연히 바이너리크기가
커져야 겠지요...
물론 개발하는 언어가 달라져서 용량이 느는 것은 여러 원인이 되겠지만요.
There is no spoon. Neo from the Matrix 1999.
댓글 달기