final
키워드를 붙여주면 성능이 향상된다.오버라이딩한 메서드는 실행 시점에 어떤 메서드를 실행할지 결정하는 반면, final
키워드가 적용된 메서드는 컴파일 시점에 어떤 메서드를 실행할지 결정하기 때문에 성능 ⬆️
Final
final
이 붙은 클래스는 상속이 불가하고,final
이 붙은 메서드나 프로퍼티는 하위 클래스에 오버라이딩을 할 수 없음 ➡️ 재정의가 필요 없다고 판단되는 경우 사용한다.
Heap에 할당되는 인스턴스들은 Reference counting 관리가 필요하다.
Swift는 Heap에 할당된 메모리를 언제 해제해야 할지를 판단하기 위해 reference counting을 사용한다.
여러 스레드에서 동시에 reference count를 증가/감소 시킬 수 있기 때문에 counting을 더 세세하게 해야함으로, reference counting이 빈번하게 발생해 실질적으로 많은 비용을 요구한다.
➡️ 구조체로 선언된 타입을 사용해 성능을 향상시킬 수 있다.
참고문서