컴파일러
함수 인라인 전개의 장점과 단점의 조합으로 올바른 것은?
- A장점은 코드가 작아지는 것, 단점은 호출 오버헤드가 늘어나는 것
- B장점은 컴파일이 빨리 끝나는 것, 단점은 실행 결과가 바뀌어 버리는 것
- C장점은 호출 오버헤드가 사라지는 것, 단점은 코드가 커지는 것
정답과 해설 보기
정답: C. 장점은 호출 오버헤드가 사라지는 것, 단점은 코드가 커지는 것
인라인 전개에서는 호출 대신 함수의 본체를 끼워 넣으므로 인수 전달, 분기, 복귀의 오버헤드가 없어집니다. 또한 호출하는 쪽의 상수 등이 본체에 전달되어 상수 폴딩이나 불필요한 코드의 삭제가 효과를 발휘하게 되는 것이 큰 장점입니다. 반면 호출할 때마다 본체의 복사본이 생기므로 코드가 커지고 명령 캐시 미스가 늘어나기도 하므로, 작은 함수나 자주 호출되는 함수를 골라 수행합니다. 올바르게 수행하면 실행 결과는 바뀌지 않습니다.
- A. 코드는 오히려 커지고 호출 오버헤드는 줄어듭니다.
- B. 올바르게 수행하면 실행 결과는 바뀌지 않습니다.
- C. 올바릅니다. 호출 오버헤드가 사라지고 최적화가 확대되는 반면 코드가 커집니다.