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
[62226] Re:Re:Re:__fastcall 사용
이경문 [gilgil] 1836 읽음    2010-08-22 01:43
네, 더 정확히 얘기를 하자면 C/C++ 언어 자체의 기본 calling convention이 cdecl입니다. C++Builder에서 VCL을 사용하기 위해서는 Delphi 코드와 호환이 되어야 하기 때문에 fastcall를 사용하는 것이죠.

그리고 fastcall을 사용한다고 해서 반드시 빨라 지는 것은 아닙니다. fastcall은 다른 calling convention과는 다르게 register를 이용해서 함수의 인자를 넘기기 때문에 함수 전달 과정에 있어서는 다른 calling convention보다는 빠르지만, 함수 내부에서 성능 개선을 위해 그 register를 local variable로 사용하려고 한다면 내부에서 또 다시 push/pop이 이루어 지기 때문에 반드시 빨라진다고 볼 수가 없습니다.

결론적으로 함수의 calling convetion문제는 요즘 컴파일러의 추세인 PGO를 이해하고 있다면 명시적인 calling convention은 큰 의미가 없다고 보면 됩니다.

장성호 님이 쓰신 글 :
: 음...
: 델파이에서는 기본적인 Calling Convention이  fastcall이지만..
: C++Builder에서는 cdecl이 기본 Calling Convention입니다.
:
: 프로젝트 옵션에서 기본 Calling Convention을  바꿀수 있지만
: 바람직한것은 아닌것 같구..
:
: 개인적으로는 fastcall 을 일부터 모두 타이핑합니다.
:
: 그럼..
:
: 이경문 님이 쓰신 글 :
: : 요즘 컴파일러는 함수간의 calling 방식을 자체적으로 최적화를 해 주는 것이 일반적입니다. 예를 들면 inline function의 아니라 하더라도 컴파일러가 코드 최적화를 하면서 inline이 빠를 것이라고 판단되면 컴파일러가 알아서 해당 함수를 inline으로 넣어 버리죠.
: :
: : profile guided optimization을 살펴 보시기 바랍니다.
: :
: : http://en.wikipedia.org/wiki/Profile-guided_optimization
: :
: : __fastcall은 함수간의 파라미터를 전달하는 방법중의 하나이며, 델파이에서 기본적으로 사용하는 calling convention이기 때문에 C++ Builder에서 많이 보이는 것입니다. 굳이 함수를 정의할 때 반드시 __fastcall을 넣을 필요는 없습니다.
: :
: : 도대체 님이 쓰신 글 :
: : : __fastcall 레지스트리에 매개변수를 등록해서 함수호출 속도를 빠르게 하는 함수호출 방식이라고 알고 있습니다.
: : :
: : : 그냥 별 생각없이 거의 모든 함수에 __fastcall을 붙여서 쓰고 있습니다.
: : :
: : : __fastcall을 사용할 때 특별히 신경써야될 사항 같은 건 없는지 궁금합니다.

+ -

관련 글 리스트
62220 __fastcall 사용 도대체 1217 2010/08/21
62230     Re:__fastcall 사용 둘리.CSIEDA 1621 2010/08/23
62227     Re:__fastcall 사용 김도완 986 2010/08/22
62224     Re:__fastcall 사용 이경문 1242 2010/08/21
62225         Re:Re:__fastcall 사용 장성호 1406 2010/08/22
62226             Re:Re:Re:__fastcall 사용 이경문 1836 2010/08/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.