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