[iOS-CS-interview] class의 성능을 향상 시킬수 있는 방법들을 나열해보시오.

Jenny·2023년 9월 13일
0

Method Dispatch

어떤 메서드(Static, Dynamic)호출할 것인가를 결정하고 실행하는 과정을 의미한다.

Static Dispatch

  • 컴파일 타임에 실제 호출할 함수를 결정할
  • 컴파일 시점에서 정하기 때문에 Dynamic Dispatch보다 비교적 빠르다.
  • 주로 값 타입(Value Type) 에서 사용하게 된다.
  • 최적화 기법중 하나인 Method Inline을 사용할 수 있다.

Dynamic Dispatch

  • Reference Semantics 에서의 다향성은 컴파일 시점에서 어떤 클레스의 메서드인지 알 수 없기에 런타임 시점에 호출할 함수를 결정한다.
  • 런타임 시점에서 호출할 함수를 정하기 때문에 Static Dispatch보다 느리다.
  • Dynamic Dispatch 같은 경우 Virtual Dispatch Table 함수 포인터 배열을 유지하여 하위 클래스에 메서드를 호출 할때 마다 Virtual Dispatch Table에 참조하여 실제 호출할 함수를 결정하며 이러한 과정이 런타임에 결정 되기 때문에 추가적인 연산이 필요 하며, 시간적인 측면에서 Static Dispatch 보다 느릴 수밖에 없다.

class의 성능을 향상 시킬수 있는 방법

  • Inheritance, Overriding이 필요 없는 클래스 인 경우 final 키워드를 사용하여 Static Dispatch로 동작 하도록 구현 한다.
  • 접근 제어자 중 하나인 private 키워드를 사용하여 컴파일 시점에Overriding가 없다는 것을 알려주며 Static Dispatch로 동작 하게 한다.

📝 참고 사이트

profile
"Jenny 있게 iOS 개발을 하며 대체 불가능한 인재가 되자"

0개의 댓글

관련 채용 정보