Understanding Swift Performance
TIL
🌱 난 오늘 무엇을 공부했을까?
- Allocation
- Reference Counting
- Method Dispatch
🔗 Static Dispatch
- compile-time
- Value Type(Struct, Enum)
🔗 Dynamic Dispatch
- runtime
- Reference Type(Class)
- Protocol(Witness Table)
📍 Protocol Type
- class의 다형성을 대체
- 큰 값의 struct도 참조형태로 사용될 수도 있다
- class보단 성능이 좋다.
📍 Generic Code
- 다형성을 대체하지만, Static Dispatch를 사용
- Specialization이 된 Generic의 경우만 성능이 개선
📍 Summary
🔗 Choose fitting abstraction with the least dynamic runtime type requirements
- struct types: value semantics
- class types: identity or OOP style polymorphism
- Generics: Static polymorphism
- Porotocol types: dynamic polymorphism