Develop
2013.04.23 15:17
[c++] 인라인 함수에 대한 설명
조회 수 7130 댓글 0
간단하게 말하면 장점은 function call이 생략되는 형태로 실행되기 때문에 function call에 의한
여러 가지 오버헤드 - CPU register 백업, stack 관리 - 등을 생략하기 때문에
간단하면서 자주 사용되는 함수에는 더 빠른 효율성을 갖게 됩니다.
하지만 항상 더 좋은 퍼포먼스를 보장하는 것은 아닙니다.
지나친 inline함수의 사용은 실행파일이 커지게 하고,
이 때문에 페이지 폴트를 야기하는 원인이 되어 퍼포먼스가 떨어지게 됩니다.
C의 #define을 이용하는 것과 비슷하지만 안정성인 측면에서 inline함수가 앞섭니다.
다음은 정리된 설명입니다.
* inline함수
- 매크로함수와 그냥 함수의 중간적인 성격을 띤 함수이다.
- 일반적인 함수를 사용하면 필요할 때마다 호출하여 사용하므로 실행파일의 크기를
줄일 수 있으나 제어권의 이동이 심하므로 실행 속도가 느려진다.
- 매크로 함수는 컴파일시 전개되어 치환되므로 제어권 이동이 발생하지 않으므로
속도가 빠르지만 데이터형 지정을 할 수가 없고 실행파일의 용량이 커지게 된다.
- 인라인 함수는 컴파일시 통째로 매크로처럼 전개되어 속도면에서 큰 이득을 얻는다.
그리고 데이터형 체크를 할 수 있는 함수이다.
용량이 커지는 단점이 있긴 하지만 간단한 작업을 하는 함수의 경우에 이용하면 매우 편리하다.
* inline 함수의 제약조건
- inline 함수 내에서는 루프문(do whie, while, for), switch, goto문을 사용할 수 없다.
- inline 함수호출시 호출되기 전에 먼저 inline 함수가 정의되어 있어야 한다.
- inline 함수 내에서 재귀호출을 할수 없다.
- inline 함수는 한 수식 내에서 두 번이상 호출될수 없다.
- 함수 포인터로 inline 함수의 주소를 취할 수 없다.
- inline 함수는 호출방식이 아니라 치환전개방식이기 때문이다.
영어 보시는 데에 지장이 없으시면
http://camars.kaist.ac.kr/~jaewon/special/c++-faq/inline-functions.html
를 참조하시면 더 많은 정보가 있습니다.
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
993 | Develop | [git] 쉬운 버전관리 Git 설명 | hooni | 2015.08.18 | 963 |
992 | Develop | [ios] 오브젝티브C→스위프트, 코드 변환 손쉽게 | hooni | 2015.08.07 | 1081 |
991 | Develop | [ios] Objective-C Types & Storage Capacity | hooni | 2015.07.22 | 1259 |
990 | PPT | [ppt] Macro for board game 발표자료 (@Team Study 2013.01.18) 1 | hooni | 2015.07.22 | 1397 |
989 | PPT | [ppt] Information Security 발표 자료 (@Team Study 2012.11.15) | hooni | 2015.07.22 | 979 |
988 | PPT | [ppt] Equation Solving 발표 자료 (@AjaxUI랩 밋업데이 2012.02.28) | hooni | 2015.07.22 | 1009 |
987 | Develop | [ios] AES256 알고리즘을 이용해 데이터 암호화/복호화 방법 | hooni | 2015.07.21 | 4192 |
986 | System/OS | 맥 OS X 에서 스크린 화면 캡쳐 단축키 (Mac Print Screen) | hooni | 2015.07.21 | 2047 |
985 | Develop | [ios] NSData to NSString (NSString to NSData) | hooni | 2015.07.21 | 734 |
984 | Develop | [ios] WWDC 2015 샘플 소스 코드 통합파일 | hooni | 2015.07.20 | 804 |
983 | Develop | [android] N-Puzzle 게임 | hooni | 2015.07.09 | 960 |
982 | System/OS | [windows] 윈도우 사용자 계정 로그인 암호 분실, 암호 변경하는 방법 | hooni | 2015.07.09 | 21545 |