Whole Module 과 Incremental
하나의 모듈 내의 모든 소스를
이렇게 하면 Optimizer 는 개별적인 선언들에 대해 Module-wide Visibility 를 가질 수 있게 된다.
모듈 외부에서는 internal
로 선언된 엔티티들에 접근할 수 없기 때문에, 잠재적인 오버라이딩 가능성을 모두 찾을 수 있고, optimizer 는 이들을 final
로 추론할 수 있게된다.
final
로 만드는 것이 성능상의 이점이 되는 이유는?
런타임 오버헤드를 컴파일 타임으로 가져온다.
[ ] devirtualization
(이게 꿀잼 주제임 - 작성예정)
따라서 모듈 외부에서 접근할 필요가 없는 요소들은 internal
로 선언해야한다.
internal
이다.devirtualization
의 이점을 가져갈 수 있다.NOTE
swiftc
command line flag -whole-module-optimization
.추가적으로 모듈에 대하여 정리하였다.