yyeonjju / Interview_Questions

0 stars 0 forks source link

Swift에서 성능을 좌우하는 3가지 요소와 프로토콜 채택에 따른 구조체의 성능 변화 #11

Open yyeonjju opened 8 months ago

yyeonjju commented 8 months ago

Apple이 WWDC에서 발표한 Swift의 성능에 영향을 미치는 3가지 요인




우리가 가장 자주 접하는 단순한 struc와 class의 성능차이

Struct

Class




protocol + struct의 성능

구조체와 클래스의 비교에서 볼 수 있듯이 일반적으로는 struct를 사용하는게 성능면에서 유리할 수 있다.

하지만 우리는 struct 단일로 코드를 작성하기도 하지만 protocol과 함께 다형성을 구현할 수도있다. struct + protocol는 왜 필요하고 이 경우에 어떻게 값을 저장하고 메서드를 실행하는지에 대해서는 Virtual Table과 Witness Table프로토콜 타입의 struct를 저장하는 특이한 방법 Existential Container 에서 살펴보았다.

단순한 struct와 다르게 프로토콜 타입의 구조체의 성능은 어떻게 달라졌을지 알아보자

Small Struct + Protocol






이번 글에서 알 수 있듯이 같은 struct라고 해서 동일한 성능을 가지는게 아니라 특정상황에서는 성능이 저하될 수 있다. 그래서 성능이 중요한 시점에서는 이런 것도 하나하나 따져보아야하는 것 같다.

다음 글에서는 제네릭의 신비함을 살펴볼건데 제네릭으로 다시 성능 좋아지도록하는 방법이 있다!