제가 대학교 1학년 때 [명품 C++ Programming] 교재로 진행되는 C++ 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다.
(2022.9 ~ 2022.12)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.
🍑인라인 함수
함수 호출에 따른 시간 오버헤드
- 함수는 적절한 단위 작업을 작성해두고 필요할 때마다 호출하여 실행이 가능하므로 프로그램을 구성하는 빌딩 블록의 역할을 하나, 함수의 호출에는 시간 소모라는 대가가 발생함
- 작은 크기의 함수를 호출시, 실행시간에 비해 호출을 위해 소요되는 부가적 시간 오버헤드가 큼 → 오버헤드 개선시 실행속도 개선 가능
인라인 함수
- 짧은 코드로 구성된 함수에 대해, 함수 호출 오버헤드로 인한 프로그램의 실행 속도 저하를 막기 위해 도입된 기능.
- 함수 앞에
inline 키워드를 적음으로서 선언.
- 인라인 함수를 호출하는 곳에 인라인 함수 코드를 확장 삽입(그대로 삽입)함으로서 처리함
▶ 메크로와 유사
▶ 코드 확장 후 인라인 함수는 사라짐
- 컴파일러에 의해 이루어짐
inline 선언은 컴파일러에게 주는 요청 (강제명령X)
- 컴파일러 입장에서 불필요한 경우
inline 선언 무시 가능
- 재귀 함수,
static 변수, 반복문, switch문, goto 문 등을 가진 함수는 인라인 함수로 허용하지 않을수도 있음
인라인 함수의 장점
→ 실행 속도의 향상(오버헤드개선)
인라인 함수의 단점
→ 인라인 함수 코드 삽입으로 컴파일된 전체 코드 크기 증가
- 최대 30% 증가
- 짧은 코드의 함수를 인라인으로 선언하는 것이 좋음.
멤버 함수의 인라인 선언과 자동 인라인
- 컴파일러는 클래스의 선언부에 구현된 멤버 함수들에 대해서
inline 선언이 없어도 인라인 함수로 자동 처리
- 생성자 포함 클래스의 모든 멤버 함수가 인라인으로 선언가능