C 와 C++ 소스 컴파일 시간이 차이 나는 이유는 뭐죠?
글쓴이: atclock / 작성시간: 수, 2005/10/12 - 10:58오후
심심 풀이로, 혹은 제 시스템에 설치 할 목적으로 가끔 rpm 패키징을 하고 있습니다. 그런데 대체적으로 C 보다는 C++ 소스를 컴파일 하는 시간이 적게는 2-3배에서 많게는 3-4배 정도 시간이 많이 걸리는 이유는 뭘까요? 프로그래밍하고는 관계가 먼 단순 데스트탑 유저입니다.
Forums:
gcc 개발자에게 물어보시길.(예제 물음)어떤 루틴을 타요
gcc 개발자에게 물어보시길.
(예제 물음)
어떤 루틴을 타요?
아에 다르게 만들어 졌나요?
C++ 구문 분석하는게 좀더 어려운가요?
아마 3번째 물어보심 될듯...
[quote="음냐뤼"]gcc 개발자에게 물어보시길.[/quote]
좀 머쓱한 답이네요...^^
볼드 패치가 뭐죠...? 답... 아키토씨에게 물어보시길...
간단하게 overhead가 많아서가 아닐까요? C는 어셈블리 즉 기계
간단하게 overhead가 많아서가 아닐까요?
C는 어셈블리 즉 기계어와 거의 1:1 매치 되므로 소스를 순서대로 죽 훝어주면 되는 반면 C++은 class개념도 들어가고 연산자 redirection 등등을 처리해야 하므로 .. 실행속도도 느려지고..
iostream과 기타 골때리는 상속관계의 표준 라이브러리들 때문이 아닐
iostream과 기타 골때리는 상속관계의 표준 라이브러리들 때문이 아닐까 저는 의심하고 있습니다.
Re: C 와 C++ 소스 컴파일 시간이 차이 나는 이유는 뭐죠?
초기에는 C++컴파일할 때 c언어로 파싱하고 컴파일 했다고 합니다.
그리고 원래 c언어거 어셈블리 다음으로 컴파일이 빠르다고 합니다. 그 이유는 대부분의 cpu가 객체지향적으로 설계가 안되어 있아서 ㄱ렇닷고 합니다.
하이레벨 언어일수록 문법이 인간에 가깝고 로우레벨 언어일수록 문법이 기계
하이레벨 언어일수록 문법이 인간에 가깝고 로우레벨 언어일수록 문법이 기계에 가깝습니다. 대충 줄 세워 보면
machine code - assembly - C - C++
이런 식이죠
그러니까 컴파일 속도도 C보다 C++이 느립니다. 좀더 인간적(?)이기 위해 machine code와 거리가 멀게 언어가 설계되었기 때문입니다.
GCC는 느린 C++ 컴파일러입니다. 특히나 (GCC의) 템플릿은 EDG
GCC는 느린 C++ 컴파일러입니다. 특히나 (GCC의) 템플릿은 EDG 구현으로 인해서 O(N^2)의 효율을 보입니다.
- 죠커's blog / HanIRC:#CN
C++의 문법은 C에 비해 많이 복잡한 편입니다.거기다 CN님의
C++의 문법은 C에 비해 많이 복잡한 편입니다.
거기다 CN님의 말씀 대로 템플릿 까지 들어가 버리면 더 오래 걸리겠지요.
그리고 최적화 방식도 C에 비해서 많이 복잡하다고 들었습니다.
또, 똑같은 코드를 C와 C++컴파일러에서 돌려도 역시 C++이 더 느리지 않을까요 ?
p.s : C언어 보단 Pascal이 컴파일 속도는 훨씬 빠르다고 알고 있습니다.
최적화나 뭐 그런 문제들도 많겠지만일단 C 언어 자체가 그렇게 파싱하
최적화나 뭐 그런 문제들도 많겠지만
일단 C 언어 자체가 그렇게 파싱하기 좋은 형태는 아닙니다.
Pascal 쪽이 파싱하기는 훨씬 좋죠.
C++는 좀 .. -_-;
( gcc 팀에서 손으로 만든 파서 쓸거라고 했을때 경악을했죠 .. ;; )
[quote="Anonymous"]최적화나 뭐 그런 문제들도 많겠지만
윈도우 상에서 델파이의 컴파일 속도와 비주얼 C의 컴파일 속도는 천지 차이죠. 압도적으로 델파이의 속도가 빠르죠. 델파이의 경우 폼 5개 정도에 bde(ado)및 기타 등등 컴포넌트 올리고 돌려도 비주얼 C++의 'hello, world!'보다 빠르다고 자신있게 말할 수 있습니다.
압도적인 속도 차이죠.(문제는 컴파일 속도만 빨랐지 자원의 활용에 대해서는 역시 C++ 혹은 C) 컴포넌트가 미리 컴파일되어 있는 델파이는.. 실행화일 용량이... [뭐 이건 bpl로 용량 줄이기가 충분히 가능하긴 하지만]
'현실은 수학으로 표현할 수 없다.'
'수학은 거짓의 학문이다.'
'난 수학이 정말 싫다.'
댓글 달기