[명품 C++ Programming] chapter 3 : 클래스와 객체(4) - 인라인 함수

eunee22·2023년 8월 11일

명품 C++ Programming

목록 보기
13/34

제가 대학교 1학년 때 [명품 C++ Programming] 교재로 진행되는 C++ 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다.
(2022.9 ~ 2022.12)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.

🍑인라인 함수

함수 호출에 따른 시간 오버헤드

  • 함수는 적절한 단위 작업을 작성해두고 필요할 때마다 호출하여 실행이 가능하므로 프로그램을 구성하는 빌딩 블록의 역할을 하나, 함수의 호출에는 시간 소모라는 대가가 발생함
  • 작은 크기의 함수를 호출시, 실행시간에 비해 호출을 위해 소요되는 부가적 시간 오버헤드가 큼 → 오버헤드 개선시 실행속도 개선 가능

인라인 함수

  • 짧은 코드로 구성된 함수에 대해, 함수 호출 오버헤드로 인한 프로그램의 실행 속도 저하를 막기 위해 도입된 기능.
  • 함수 앞에 inline 키워드를 적음으로서 선언.
  • 인라인 함수를 호출하는 곳에 인라인 함수 코드를 확장 삽입(그대로 삽입)함으로서 처리함
    ▶ 메크로와 유사
    ▶ 코드 확장 후 인라인 함수는 사라짐
  • 컴파일러에 의해 이루어짐
  • inline 선언은 컴파일러에게 주는 요청 (강제명령X)
    • 컴파일러 입장에서 불필요한 경우 inline 선언 무시 가능
  • 재귀 함수, static 변수, 반복문, switch문, goto 문 등을 가진 함수는 인라인 함수로 허용하지 않을수도 있음

인라인 함수의 장점

→ 실행 속도의 향상(오버헤드개선)

인라인 함수의 단점

→ 인라인 함수 코드 삽입으로 컴파일된 전체 코드 크기 증가

  • 최대 30% 증가
  • 짧은 코드의 함수를 인라인으로 선언하는 것이 좋음.

멤버 함수의 인라인 선언과 자동 인라인

  • 컴파일러는 클래스의 선언부에 구현된 멤버 함수들에 대해서 inline 선언이 없어도 인라인 함수로 자동 처리
  • 생성자 포함 클래스의 모든 멤버 함수가 인라인으로 선언가능
profile
보안 공부하는 대학교 4학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글