Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 정렬
  • 구현
  • 이분탐색
  • UC++
  • 그래프
  • 기하
  • 분할정복
  • 우선순위큐
  • 조합론
  • 동적계획법
  • 백준
  • SCC
  • 큐
  • LCA
  • 투포인터
  • 백트래킹
  • C++
  • 브루트포스
  • 트리
  • 유니온 파인드
  • 트라이
  • KMP
  • 문자열
  • 위상 정렬
  • 정수론
  • 누적합
  • 수학
  • 최소 스패닝 트리
  • 스택
  • 세그먼트 트리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

공부 및 정리/C++

C++의 기초 - 5

2022. 12. 12. 19:59

* Inline 함수

- 함수는 Call할 때 수행시간이 추가로 드는 편입니다.

 

- 일반적인 함수의 수행 과정

 

1. 스택에 함수 매개변수, 호출이 끝난 후 돌아갈 주소, 함수의 지역변수 등이 저장된다.

 

2. 함수가 시작되는 메모리 주소로 점프하여 함수를 수행한다.

 

3. 리턴 값을 레지스터에 복사한 후, 저장해 둔 주소의 명령으로 돌아온다.

 

 

- Inline 함수의 수행 과정

 

1. 함수 코드가 함수 콜한 코드 안에 직접 삽입된다.

 

즉, 함수로 점프, 돌아오는 과정이 생략됩니다.

 

 

그렇다고 항상 Inline 함수가 유리한 것은 아닙니다.

 

이유는 다음과 같습니다.

 

1. Inline으로 생략되는 수행 시간이 크지 않다. 

-> 빈번히 사용되는 함수가 아니면 큰 이득이 없음

 

2. 함수 코드가 길어서 메모리를 많이 사용하게 되는 경우 

-> 코드 부분의 메모리가 길어짐

 

 

또한, 똑똑한 C++ 컴파일러는 Inline을 붙였다고 해서 반드시 Inline 함수로 만들어주지 않습니다.

 

컴파일러는 함수를 보고 스스로 Inline의 여부를 결정하기 때문에

 

__forceinline이나 __declspec(noinline)같은 키워드로 강제하지 않는 한, 

 

inline 키워드는 함수 인라인 여부에 거의 영향을 미치지 않습니다.

 

 

>> Inline은 최근, ODR을 무시하라는 의도로 사용합니다. 자세한건 아래 링크를 참조!

 

 

씹어먹는 C++ - <20 - 2. 코드 부터 실행 파일 까지 - 컴파일 (Compile)> (modoocode.com)

 

씹어먹는 C++ - <20 - 2. 코드 부터 실행 파일 까지 - 컴파일 (Compile)>

 

modoocode.com

 

저작자표시 (새창열림)

'공부 및 정리 > C++' 카테고리의 다른 글

C++의 기초 - 7  (0) 2022.12.20
C++의 기초 - 6  (0) 2022.12.12
C++의 기초 - 4  (0) 2022.11.30
C++의 기초 - 3  (0) 2022.07.12
C++의 기초 - 2  (0) 2022.06.15
    '공부 및 정리/C++' 카테고리의 다른 글
    • C++의 기초 - 7
    • C++의 기초 - 6
    • C++의 기초 - 4
    • C++의 기초 - 3
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바