코딩의기술 -오즈 모리하루::함수화로 인한 실행속도 저하
충분히 읽을 만할 소지에 있는거 같음.
작은 함수로 분할하면 "함수 호출 오버헤드로 실행 속도 저하가 일어난다." 라는 의견. (내 생각도)
- 컴파일 시점에 최적화가 되지 않으면, 함수 호출로 인해 실행 속도 저하가 있을 수 있지만, 일반적으로 디버그 모드에서 컴파일러가 코드를 최적화 하지 않는다. 따라서 디버그 모드에서는 함수화와 안한 경우에 실행 속도의 차이가 있을 수 있음. (학생은 다 디버그 모드 아니요...)
- 릴리즈 모드에서는 작은 함수는 인라인으로 전개된다.
인라인 전개는 함수를 호출하는 대신, 컴파일러가 해당 위치에 함수 내부의 처리를 복사해서 전 개해버리는 기능이다. 따라서 인라인 전개시 함수 호출 오버헤드가 없어 함수화로 인한 실행 속
도 저하가 나타나지 않는다.
- 컴파일러의 최적화 기능을 잘 활용하면 함수 호출로 인한 오버헤드 문제가 생기지 않는다.
작고 단순한 함수일수록 컴파일러의 최적화 혜택을 쉽게 받을 수 있다.
- 그런 걱정할 시간에 알고리즘이나 자료구조를 통한 속도 개선에 신경써라.
댓글
댓글 쓰기