11.1 Inline functions

주홍영·2022년 3월 14일
0

Learncpp.com

목록 보기
115/199

https://www.learncpp.com/cpp-tutorial/inline-functions/

function을 사용한다는 것은 많은 benefit을 가져다 준다

  • function 의 코드를 재사용할 수 있다
  • update하거나 change를 할 때 더 쉽다
  • 가독성이 좋아진다, 우리가 만약 function의 기능을 알고 있다면
  • function은 type checking과 function prameter와의 matching을 지원한다
  • debug 하기 쉽다

하지만 function의 사용의 단점 중 하나는 performance overhead를 발생시킨다
왜냐하면 cpu는 return을 위한 address도 저장해야 하고 parameter는 value를 assign하기 위해 생성되어야 하며... 등등등

만약 function이 크고 복잡한 기능을 한다면 위와 같은 비용은 고려할 이유가 적어진다
하지만 간단하지만 자주쓰이는 기능의 경우에 function call이 자주 발생하므로
상대적으로 앞서 말한 비용이 크게 다가온다

이러한 penalty를 해결하기 위해 c++은 inline 키워드를 지원한다
inline function을 사용하면 함수가 사용된 곳에 inline에서 정의한
함수의 코드가 대체되어서 들어가는 느낌으로 생각하면 되는 것 같다

inline int min(int x, int y)
{
    return x < y ? x : y;
}

int min(int x, int y)
{
    return x < y ? x : y;
}

int main()
{
    std::cout << min(5, 6) << '\n';
    std::cout << min(3, 2) << '\n';
    return 0;
}

위와 같은 case라면 아래와 같다

int main()
{
    std::cout << (5 < 6 ? 5 : 6) << '\n';
    std::cout << (3 < 2 ? 3 : 2) << '\n';
    return 0;
}

오늘날 컴파일러는 inline에 대해서 자율적으로 처리하는 경우가 많다
우리가 inline이라고 mark 하지 않더라도 스스로 판단해서 사용할 수도 있다
따라서 inline 키워드를 사용해야할 반드시 할 필요는 없다
컴파일러가 알아서 처리하도록 맡겨도 된다

profile
청룡동거주민

0개의 댓글