Function

  • function call이 이뤄짐에 따라 중간에 생기는 연산값을 저장하고 불러오는 과정이 필요하며 return값에 따라 Jump & Link가 이뤄져야 하고 그에 따라 스택 프레임 포인터도 변경해줘야 하는 등 할 게 많다.
  • function callreturn 없이 순차적으로 실행하는 코드에 비해 수행해야 할 명령어의 수가 많아지기 때문에 오버헤드가 커지고 성능이 떨어진다.

매크로 함수

  • 함수를 매크로로 작성하면 실행 될 때 Text 영역에 위치하게 된다. 즉 형태는 function call을 하는 것 같지만 프로그램 코드로 인식되어 Text 영역에 있기 때문에 Jump & Link가 발생하지 않아 오버헤드가 적고 성능이 올라간다.
  • 하지만 그만큼 Text가 길어져서 그만큼 차지하는 공간이 늘어나게 된다.

👀 두 방식에 각각 장단점이 있기 때문에 상황에 맞게 사용하면 된다.

오버헤드

  • 부담이라 할 수 있다.
  • 추가적으로 해야 하는 일이기 때문에 컴퓨터가 어떤 작업을 수행할 때 오버헤드가 크다는 것은 그 작업을 수행하기 위해 필요한 명령어의 수가 많아지기 때문이라고 할 수 있다.


출처